Jörg Reinholz: "is_writable" schlägt fehl

Beitrag lesen

if ($Zeiger = fopen ($Datei, 'w'))
       {
            if (flock ($Zeiger, LOCK_SH))
            {
               if (is_writable ($Datei))

Hm. Eigentlich sollte schon das fopen zu einer Warnung führen, wenn die Rechte nicht ausreichend sind. Bei mir:

PHP Warning:  fopen(test.txt): failed to open stream: Permission denied in /home/fastix/test.php on line 3

Danach schlägt auch das flock fehl, denn $Zeiger enthält jetzt false:

PHP Warning:  flock() expects parameter 1 to be resource, boolean given in /home/fastix/test.php on line 4

Deine Reihenfolge für die Tests ist also alles andere als sinnvoll. Prüfe ob die Datei existiert dann ob diese schreibbar ist.

Dann versuche fopen und wenn dieses funktionierte flock.

Zu Deiner Frage: Betriebssystem?

Falls Linux: Was sagt ein

print php ls -l $Datei."\n";
Oder ein ls -l ../TEXTDATEIEN/Startseite.txt mit ssh ausgeführt?

Was sagt:
print php ls -dl $Datei."\n";
Oder ein ls -dl ../TEXTDATEIEN mit ssh ausgeführt?

Was steht in Deiner php.ini?

(Ausgaben mit <?php phpinfo(); ?>

Im Handbuch steht zu safe_mode und fopen

"Überprüft, ob das Verzeichnis, in dem das Skript ausgeführt werden soll, die gleiche UID (Eigentümer) hat wie das Skript selbst"

und zu All filesystem and stream functions: "Überprüft ob die Dateien/Verzeichnisse, die mit dem Skript bearbeitet werden sollen, die gleiche UID (Eigentümer) haben wie das Skript selbst. Überprüft, ob das Verzeichnis, in dem das Skript ausgeführt werden soll, die gleiche UID (Eigentümer) hat wie das Skript selbst. (see the safe_mode_include_dir php.ini option."

Wer ist also Eigentümer der Datei und als welcher User agiert PHP?

Jörg Reinholz