2010-03-18 66 views
15

我使用的fopen詳細的錯誤從文件上的fopen

$fh = fopen($path, 'r') or die('Could not open file'); 

讀現在我contantly得到錯誤無法打開文件。我檢查了文件路徑,甚至將文件的權限更改爲777.有沒有一種方法可以得到一個詳細的錯誤報告,說明爲什麼文件不能被類似於mysql_error()打開?

回答

24

打開錯誤報告,或者在生產環境中(從PHP 5.2.0開始),您應該也可以使用error_get_last()

+0

哦,得到\ _Last \ _error()...這是不是說明:$ php \ _errormsg更好。刪除我的回答贊成這個功能。 – VolkerK 2010-03-18 14:01:08

+2

無需刪除它。他可能在一個只有5.1的項目上(就像我現在的那樣)! – webbiedave 2010-03-18 14:13:26

+0

確信...... – VolkerK 2010-03-18 14:20:05

3

是的。
PHP有詳細的錯誤信息給你。
你只需打開它。

要dislay它在屏幕上的腳本的頂部添加這些2線:

ini_set('display_errors',1); 
error_reporting(E_ALL); 

或者,如果你希望它來代替記錄,

ini_set('log_errors',1); 
ini_set('display_errors',0); 
error_reporting(E_ALL); 

另外請注意,使用模()是非常糟糕的做法。

12

對於5.2之前的php版本(缺少error_get_last()),您可以使用track_errors

ini_set('track_errors', 1); 
$fh = fopen('lalala', 'r'); 
if (!$fh) { 
    echo 'fopen failed. reason: ', $php_errormsg; 
} 

還看到:http://de.php.net/reserved.variables.phperrormsg

+1

+1 5.2版本前後仍在安裝。很好,不知道這個! – 2010-03-18 14:50:39

+1

再次+1 - 不知道track_errors ini var,這很方便:-) – richsage 2010-03-18 15:14:20

0
$fh = fopen($path, 'r') or die (error_get_last());