Chỉ cho phép hiển thị lỗi trong PHP qua htaccess


113

Tôi đang thử nghiệm một trang web trực tuyến.

Hiện tại, các lỗi không được hiển thị (nhưng tôi biết chúng tồn tại).

Tôi chỉ có quyền truy cập vào .htaccesstệp.

Làm cách nào để tạo tất cả các lỗi hiển thị bằng .htaccesstệp của tôi ?


Tôi đã thêm những dòng này vào .htaccesstệp của mình :

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

Và các trang bây giờ hiển thị:

Lỗi máy chủ nội bộ


tôi đã thực hiện một số googling, thêm một số cờ vào htaccess của mình; và các trang của tôi không thể hiển thị lại
Ogugua Belonwu

3
Có vẻ như bạn không có quyền ghi đè các cài đặt này từ htaccess. Bạn có thể cần thiết lập AllowOverride Allcấu hình Apache, nếu bạn có quyền truy cập vào cấu hình đó.
kapa

Kiểm tra nhật ký lỗi apache của bạn. Nó sẽ phải chính xác lý do tại sao bạn gặp phải lỗi nội bộ 500. Những gì bạn thấy trong trình duyệt theo thiết kế là vô dụng cho mục đích chẩn đoán.
Marc B

Câu trả lời:


190

.htaccess:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log

14
tôi đã thêm những dòng này vào htaccess của mình: php_flag display_startup_errors trên php_flag display_errors trên php_flag html_errors trên và các trang hiển thị lỗi máy chủ nội bộ
Ogugua Belonwu

4
Khi sử dụng PHP làm mô-đun Apache, bạn cũng có thể thay đổi cài đặt cấu hình bằng cách sử dụng lệnh trong tệp cấu hình Apache (ví dụ: httpd.conf) và tệp .htaccess. Bạn sẽ cần các đặc quyền "AllowOverride Options" hoặc "AllowOverride All" để làm như vậy. php.net/manual/en/configuration.changes.php
silex

Tạo PHP_errors.log và làm cho nó 777 theo cách khác, bạn có thể sẽ không thấy tệp được tạo bởi apache và được lấp đầy ... ít nhất tôi phải tạo nó.
PJunior

2
như ogugua Tôi bây giờ cũng bị lỗi máy chủ nội bộ do sử dụng các dòng này.
hạ cánh

1
Nếu bạn nhận được 500 thì có thể là do bạn đang sử dụng php-fpm, không phải mod_php.
mpchadwick

41
php_flag display_errors on

Để bật chế độ hiển thị lỗi thực tế.

Để đặt các loại lỗi bạn đang hiển thị, bạn sẽ cần sử dụng:

php_value error_reporting <integer>

Kết hợp với các giá trị số nguyên từ trang này: http://php.net/manual/en/errorfunc.constants.php

Lưu ý nếu bạn sử dụng -1 cho số nguyên của mình, nó sẽ hiển thị tất cả các lỗi và là bằng chứng trong tương lai khi họ thêm vào các loại lỗi mới.


17

Tôi cảm thấy muốn thêm nhiều chi tiết hơn vào câu trả lời hiện có:

# PHP error handling for development servers
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /full/path/to/file/php_errors.log
php_value error_reporting -1
php_value log_errors_max_len 0

Cấp quyền 777 hoặc 755 cho tệp nhật ký và sau đó thêm mã

<Files php_errors.log>
     Order allow,deny
     Deny from all
     Satisfy All
</Files>

ở cuối .htaccess. Điều này sẽ bảo vệ tệp nhật ký của bạn.

Các tùy chọn này phù hợp với một máy chủ phát triển. Đối với máy chủ sản xuất, bạn không nên hiển thị bất kỳ lỗi nào cho người dùng cuối. Vì vậy, thay đổi cờ hiển thị thành tắt .

Để biết thêm thông tin, hãy theo liên kết sau: Xử lý lỗi PHP nâng cao qua htaccess


1
làm thế nào về việc đưa chmod "0644" vào tệp nhật ký lỗi? nó sẽ vẫn hoạt động chứ?
Andre Chenier

2

Nếu bạn chỉ muốn thấy các lỗi thời gian chạy nghiêm trọng:

php_value display_errors on
php_value error_reporting 4

2

Điều này làm việc cho tôi ( tham khảo ):

# PHP error handling for production servers
# Disable display of startup errors
php_flag display_startup_errors off

# Disable display of all other errors
php_flag display_errors off

# Disable HTML markup of errors
php_flag html_errors off

# Enable logging of errors
php_flag log_errors on

# Disable ignoring of repeat errors
php_flag ignore_repeated_errors off

# Disable ignoring of unique source errors
php_flag ignore_repeated_source off

# Enable logging of PHP memory leaks
php_flag report_memleaks on

# Preserve most recent error via php_errormsg
php_flag track_errors on

# Disable formatting of error reference links
php_value docref_root 0

# Disable formatting of error reference links
php_value docref_ext 0

# Specify path to PHP error log
php_value error_log /home/path/public_html/domain/PHP_errors.log

# Specify recording of all PHP errors
# [see footnote 3] # php_value error_reporting 999999999
php_value error_reporting -1

# Disable max error string length
php_value log_errors_max_len 0

# Protect error log by preventing public access
<Files PHP_errors.log>
 Order allow,deny
 Deny from all
 Satisfy All
</Files>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.