Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

[gelöst] fopen und openSUSE 11.2 keine Berechtigung

Alles rund um das Internet, Internet-Anwendungen (E-Mail, Surfen, Cloud usw.) und das Einrichten von Netzwerken einschl. VPN unter Linux

Moderator: Moderatoren

Antworten
Gerhard1
Newbie
Newbie
Beiträge: 26
Registriert: 30. Mär 2007, 14:33

[gelöst] fopen und openSUSE 11.2 keine Berechtigung

Beitrag von Gerhard1 » 4. Apr 2011, 10:59

Seit openSUSE 11.2 funktioniert fopen nicht mehr.

Ich habe folgende Skript erstellt, es liegt im Verzeichnis /srv/www/htdocs/Apache

Code: Alles auswählen

<?PHP
   error_reporting(E_ALL);

   $pfad = "/srv/www/htdocs/Apache";
   $id = fileowner ( $pfad );

   echo 'Benutzer-ID der Datei ' . $pfad . ': ' . $id . '<br>';

   $array = posix_getpwuid ( $id );

   while ( list ( $key, $val ) = each ( $array ) )
   {
      echo $key . ' - ' . $val . '<br>';
   }

   $filename = '/test.txt';
   $somecontent = "Füge dies der Datei hinzu\n";

   if ( is_writeable ( $pfad ) )
   {
      echo ' Das Verzeichnis ' . $pfad . ' existiert und ist beschreibbar<br>';
   }
   else
   {
      echo 'Das Verzeichnis ' . $pfad . ' existiert nicht und ist nicht beschreibbar<br>';
   }

   // Wir öffnen $filename im "Schreib" - Modus.
   // dort wird $somecontent später mit fwrite() geschrieben.
   if (!$handle = fopen($filename, "w")) 
   {
      print "Kann die Datei $filename nicht öffnen";
      exit;
   }

   // Schreibe $somecontent in die geöffnete Datei.
   if (!fwrite($handle, $somecontent)) 
   {
   print "Kann in die Datei $filename nicht schreiben";
   exit;
   }
   print "Fertig, in Datei $filename wurde $somecontent geschrieben";
   fclose($handle);
?>
Unter openSUSE 11.2, 11.3 und 11.4 wird folgende ausgegeben:

Benutzer-ID der Datei /srv/www/htdocs/Apache: 0
name - root
passwd - x
uid - 0
gid - 0
gecos - root
dir - /root
shell - /bin/bash
Die Datei /srv/www/htdocs/Apache existiert und ist beschreibbar
Warning: fopen(/test.txt): failed to open stream: Permission denied in /srv/www/htdocs/Apache/Test_error.php on line 30 Kann die Datei /test.txt nicht öffnen

Wenn ich das Skript unter openSUSE 11.1 ausführe funtioniert alles und die Datei test.txt wird erstellt und beschrieben.

Die Rechte auf das Verzeichnis sind:
drwxrwxrwx 2 root root 4096 2. Apr 18:51 Apache

Wo muss ich die Konfiguration anpassen um den Fehler zu beseitigen?

Danke

Gruß
Gerhard1
Zuletzt geändert von Gerhard1 am 4. Apr 2011, 14:18, insgesamt 2-mal geändert.

Werbung:
drcux
Hacker
Hacker
Beiträge: 389
Registriert: 9. Aug 2005, 12:14

Re: fopen und openSUSE 11.2 keine Berechtigung

Beitrag von drcux » 4. Apr 2011, 13:44

Apparmor aktiv?

Gerhard1
Newbie
Newbie
Beiträge: 26
Registriert: 30. Mär 2007, 14:33

(gelöst) fopen und openSUSE 11.2 keine Berechtigung

Beitrag von Gerhard1 » 4. Apr 2011, 14:17

Ich habe inzwischen den Fehler gefunden.

$filename = '/test.txt';

Hier fehlt der Punkt vor dem /.

So versucht PHP im root Verzeichnis zu schreiben.
Richtig ist: $filename = './test.txt';

Nun wird im aktuellen Verzeichnis die Datei erstellt

Gruß
Gerhar1

Dr. Glastonbury
Advanced Hacker
Advanced Hacker
Beiträge: 1149
Registriert: 20. Aug 2004, 12:27
Wohnort: München
Kontaktdaten:

Re: (gelöst) fopen und openSUSE 11.2 keine Berechtigung

Beitrag von Dr. Glastonbury » 4. Apr 2011, 18:46

Hi Gerhard1,
schön, dass du den Fehler gefunden hast! Außerdem sehr schön, dass du ein "gelöst" in den Titel geschrieben hast! Würde mich freuen, wenn du in Zukunft auch noch die

Code: Alles auswählen

-Tags verwenden würdest, dann wird das ganze gleich viel angenehmer zu lesen.
Hab deinen Beitrag mal entsprechend editiert ;)
Das Leben: hasse oder ignoriere es, lieben kannst du es nicht.

Antworten