Như đã chỉ ra trong nhiều câu hỏi khác, chuyển display_errors thành Off trong php.ini làm cho máy chủ web trả lời với mã trạng thái 500 Lỗi máy chủ nội bộ thay vì 200 OK khi gặp phải lỗi nghiêm trọng. Tôi thiết lập một thử nghiệm đơn giản với một chức năng không xác định để giải thích các hành vi:Tại sao display_errors thay đổi mã trạng thái HTTP?
php.ini
display_errors = On
index.php
<?php test();
Cung cấp:
Fatal error: Call to undefined function test()
in D:\xampp\htdocs\index.php on line 1
hoặc chỉ một trang trống nếu tôi tắt tiếng cuộc gọi chức năng như sau:
<?php @test();
Trong cả hai trường hợp trả lời tiêu đề như sau:
HTTP/1.1 200 OK
Date: Tue, 10 Jul 2012 20:08:22 GMT
Server: Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By: PHP/5.3.8
Content-Length: 0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
Trong khi thay đổi php.ini để:
display_errors = Off
Nguyên nhân:
HTTP/1.0 500 Internal Server Error
Date: Tue, 10 Jul 2012 20:10:35 GMT
Server: Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By: PHP/5.3.8
Content-Length: 0
Connection: close
Content-Type: text/html
Ai có thể giải thích cho tôi những underlaying cơ chế làm cho máy chủ web trả lời bằng 500 khi display_errors bị Tắt?
Ngắt liên tục, tôi cho rằng nó sẽ luôn trả lại 500 ngay sau khi có lỗi nghiêm trọng. Tôi cũng muốn biết tại sao ... –
trùng lặp: http://stackoverflow.com/questions/3570747/display-500-error-on-any-error-in-apache –
Điều đó dường như đối với tôi một câu hỏi khác –