2010-03-18 9 views
15

Tôi đang sử dụng fopen để đọc từ một tập tinlỗi chi tiết về fopen

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

Bây giờ tôi nhận được lỗi contantly Không thể mở tập tin. Tôi đã kiểm tra đường dẫn tệp và thậm chí thay đổi quyền của tệp thành 777. Có cách nào tôi có thể nhận được báo cáo lỗi chi tiết không vì lý do tệp không thể mở được tương tự như mysql_error()?

Trả lời

24

Bật báo cáo lỗi hoặc trong môi trường sản xuất (từ phiên bản PHP 5.2.0 trở đi), bạn cũng có thể sử dụng error_get_last().

+0

oh, có \ _last \ _error() ... đó là tốt hơn so với $ php \ _errormsg. Xóa câu trả lời của tôi có lợi cho chức năng này. – VolkerK

+2

Không cần xóa nó. Anh ấy có thể đang ở trong một dự án (như tôi hiện đang) chỉ có 5,1! – webbiedave

+0

bị thuyết phục ...... – VolkerK

3

Có.
PHP có thông báo lỗi chi tiết cho bạn.
Bạn chỉ cần bật tính năng này.

Để dislay nó trên màn hình thêm 2 dòng ở phía trên cùng của kịch bản:

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

Hoặc nếu bạn muốn nó được đăng nhập thay vào đó,

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

Cũng lưu ý rằng việc sử dụng chết() là thực hành rất xấu.

12

Đối với phiên bản php trước 5.2 (thiếu error_get_last()), bạn có thể sử dụng track_errors.

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

also see: http://de.php.net/reserved.variables.phperrormsg

+1

+1 cài đặt trước 5.2 vẫn còn xung quanh. Nice, không biết điều này! –

+1

+1 một lần nữa - không biết về track_errors ini var, đó là tiện dụng :-) – richsage

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