2012-10-05 156 views
5

根據fopen documentation,在某些模式下,它會創建文件,如果它不存在,但在我的情況下,我已經檢查了所有'w','w +','x '和'x +'模式,但它只是向我發出警告,並且無法創建文件。PHP fopen()不會創建文件

這是我的代碼:

$this->handle = fopen($this->log_name, 'w'); 

和我所得到的:

Warning: fopen(D:\xampp\htdocs\farid\logs\error.php) [function.fopen]: failed to open stream: No such file or directory in D:\xampp\htdocs\farid\libraries\error\log.php on line 34 
Warning: fwrite() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\farid\libraries\error\log.php on line 66 
Warning: fclose() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\farid\libraries\error\log.php on line 27 

而且我在Windows環境下工作。

+2

這些目錄是否存在? – aynber

+2

文件權限是最明顯的嫌疑人 –

+1

從相同的文檔 - 「如果PHP已經決定文件名指定一個本地文件,那麼它將嘗試打開該文件的流。該文件必須可以訪問PHP,所以你需要確保文件訪問權限允許訪問,如果您啓用了安全模式,或者使用open_basedir進一步的限制可能適用。「 –

回答

9

檢查日誌文件的路徑是否存在,它會創建一個文件而不是目錄。

另請檢查運行xampp的用戶是否有權訪問您指定的文件夾。

+0

感謝您的幫助,我的目錄名稱出現錯誤。現在它正在創建文件。有沒有什麼辦法,我甚至創建文件夾,如果它不存在於我的功能? –

+1

檢查http://php.net/manual/en/function.mkdir.php檢查參數部分尋找「遞歸」,首先你必須檢查文件是否存在,'realpath'和'file_exists'可能是有幫助 –