2009-07-04 6 views
1

Ich bin fest und brauche eine Hand. Hoffe jemand kann helfen?PHP - fehlgeschlagen schreiben

Jeder hat eine Idee, warum ich "failed write" in diesem Code bekomme?

$write_file = "/usr/home/public_html/php/users_v2.sql"; 
$write_handle = fopen($write_file, "w") || die("Couln't open users_v2!"); 

if (is_writeable($write_file)) { 
    if ($write_handle === FALSE) echo 'Failed handle?!'; 
    if (fwrite($write_handle, "Hi\n") === FALSE) echo "Failed write!\n"; 
} 

fclose($write_handle); 

Vielen Dank im Voraus.

+0

Nicht sicher, aber können Sie überprüfen, ob das Programm die notwendigen Berechtigungen zum Schreiben in die Datei hat? –

+0

Ja, das habe ich überprüft. 777 ist auf der ganzen Linie. Es ist so seltsam. – frio80

+0

Haben Sie die Fehlerprotokolle Ihres Servers überprüft? – PatrikAkerstrand

Antwort

1

Wenn Sie den OR-Operator beim Erstellen Ihres Datei-Handles verwenden, geben Sie abhängig von der Operation einen booleschen Wert zurück. Also wird $ write_handle anstelle der Dateiressource wahr oder falsch enthalten. Eine bessere Möglichkeit, eine Datei zum Schreiben und Test zu öffnen, dass es erfolgreich war wäre dies:

$write_handle = fopen($write_file, 'w'); 
if ($write_handle === false) 
{ 
    die('Could not open file ' . $write_file); 
} 

Darüber hinaus können Sie die file_put_contents() Funktion verwenden, die die fopen Griffe(), fwrite() und fclose() für Sie. Ich empfehle das nur, wenn Sie nur einen Schreibvorgang in dieselbe Datei ausführen, da dies eine Menge Overhead bedeutet. Wenn Sie das Flag FILE_APPEND nicht übergeben, wird die Datei für jeden Schreibvorgang geleert.

0

Ich habe es überall verwendet, aber das Problem ist das || sterben ("Couldn open users_v2!");

Zuerst habe ich hinzugefügt:

error_reporting(E_ALL); 

um zu sehen, welche PHP-Fehler meldet.

Gibt einen ungültigen Stream-Handle-Fehler und Dateihandle von 1 zurück. Ohne es ist das zurückgegebene Dateihandle "Resource ID # X".

Ändern der Zeile:

$write_handle = fopen($write_file, "w"); // || die("Couln't open users_v2!"); 

und Ihr Code funktioniert gut. Werde das jetzt auf php.net veröffentlichen.

+0

Es läuft auf FreeBSD. – frio80

Verwandte Themen