2009-07-04 182 views
1

我被卡住了,需要一隻手。希望有人能幫忙嗎?PHP - 寫入失敗

任何人都有任何想法,爲什麼我在這段代碼中「失敗的寫」?

$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); 

在此先感謝。

+0

不確定,但您可以檢查程序是否具有寫入文件的必要權限? – 2009-07-04 16:23:49

+0

是的,我檢查了。 777的全線。它很奇怪。 – frio80 2009-07-04 16:26:15

回答

1

通過在創建文件句柄時使用OR運算符,您將根據操作返回布爾值。所以$ write_handle將包含true或false,而不是文件資源。一個更好的辦法來打開寫作和測試一個文件,這是成功的會是這樣:

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

此外,可以使用的file_put_contents()函數處理fopen()函數,fwrite()將和FCLOSE()您。如果您只對同一個文件執行一次寫入操作,我只會推薦此操作,因爲這會造成很大的開銷,除非您通過FILE_APPEND標誌,否則將爲每次寫入都清空該文件。

0

我已經看到它使用無處不在,但問題是||。死亡(「Couln't open users_v2!」);

首先我說:

error_reporting(E_ALL); 

,看看PHP是錯誤的錯誤報告。

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

返回無效的流句柄錯誤和文件句柄1.沒有它,返回的文件句柄是「資源ID #x」。

更改行:

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

和你的代碼工作正常。現在就去php.net上發佈。