- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
正如在许多其他问题中所指出的,在 php.ini 中将 display_errors 设置为 Off 会使 Web 服务器在遇到 fatal error 时以状态码 500 Internal server error 代替 200 OK 进行应答。我设置了一个带有未定义函数的简单测试来解释行为:
php.ini
display_errors = On
索引.php
<?php test();
给予:
Fatal error: Call to undefined function test()
in D:\xampp\htdocs\index.php on line 1
或者如果我像这样使函数调用静音,则只是一个空白页:
<?php @test();
在这两种情况下,答案标题如下:
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
将 php.ini 更改为:
display_errors = Off
原因:
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
任何人都可以向我解释当 display_errors 关闭时使 Web 服务器回答 500 的底层机制吗?
最佳答案
原因是使用 display_errors = On
,您实质上是在要求 PHP 为您提供适当的 HTTP 响应,即使您的脚本中存在错误也是如此。将其视为脚本和响应之间的附加层。控制输出的不再是您的脚本,而是 PHP。
当你打开这个选项时,你实际上是在说,“如果有错误,请仍然给我一个有效的 HTTP 响应页面(它甚至可能包括合适的标记),因为我会查看那个而不是我的日志。“
设置为 Off
时,HTTP 响应应该是无意义的,因此是 500。设置为 On 时,预计会出现 PHP 错误,因此请求总体上 不是 500,即使您的脚本失败。
关于php - 为什么 display_errors 会改变 HTTP 状态码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11421240/
我使用的是 CodeIgniter,我已将以下行添加到我的 index.php 中: error_reporting(E_ALL ^ E_NOTICE); ini_set('display_error
我有一个运行 Apache2 和 PHP 5 的 Ubuntu 服务器。在 php.ini 中,我设置了 display_errors = On 和 error_reporting = E_ALL |
error_reporting(0) 是否与 ini_set('display_errors', 0) 相同?如果不是,有什么区别? 我也对这段代码的安全方面感兴趣吗?我可以实现'so malicio
我有一个运行 Apache2 和 PHP 5 的 Ubuntu 服务器。在 php.ini 中,我设置了 display_errors = On 和 error_reporting = E_ALL |
嘿,我知道有一些关于这个主题的帖子,我已经全部搜索过了! 无论我做什么,我都无法在 php 中启用 display_errors 设置!!! 我正在使用安装了 php 5.3 并运行 apache2
这个问题在这里已经有了答案: error_reporting(E_ALL) does not produce an error (7 个答案) 关闭 6 年前。 在 PHP 5.5.9 中 ini_
我的 phpinfo 中的 display_errors 下有“stdout”。 这是什么意思? 我在哪里可以找到有关它的文档? 我在 http://php.net/ 中找不到 我读了here告诉它出
我在一台服务器上有以下环境: dev.domain.com 用于开发 用于测试的 test.domain.com www.domain.com 是工作产品 对于开发环境,我希望看到所有的 PHP 错误
在我的 PHP 错误处理程序中,我想执行以下操作: if (ini_get('display_errors') 开启)) { //显示调试信息 } 别的 { //只显示“哎呀!” } 我已经浏览了文档
我使用的是 OS X 10.9(不过 10.8 中也是一样) 我试图将 display_errors 设置为 On,但无法弄清楚。我在/etc 中没有 php.ini 文件,因此我复制了/etc/ph
当 display_errors 关闭并且 PHP 以安全模式运行时,我们如何调试 PHP 脚本? 最佳答案 最好的方法是使用 error_log() http://php.net/manual/en
我在 OS X 10.9 上(尽管在 10.8 中是一样的) 我正在尝试将 display_errors 设置为 On 但无法弄清楚。我在/etc 中没有 php.ini 文件,所以我复制了/etc/
正如在许多其他问题中所指出的,在 php.ini 中将 display_errors 设置为 Off 会使 Web 服务器在遇到 fatal error 时以状态码 500 Internal serv
给定以下脚本 我得到了预期的结果 Notice: Use of undefined constant error - assumed 'error' in /htdocs/test.php on l
我需要不显示而是记录 PHP 错误。我正在使用 PHP 5.4 我当前在 php.ini 中记录错误的代码是: log_errors = 1 error_log = "/path-to-file/er
我为带有 Apache 2.4.3 和 PHP 5.4.7 的 Windows 安装了新的 XAMPP 版本 1.8.1。 我的网站都没有工作,返回 HTTP 错误 500(内部服务器错误)。我将原因
我正在使用 php5-fpm 运行 nginx,并希望启用 display_errors。我正在运行一个虚拟主机,所以请帮助找到启用 display_errors 、 display_startup_
在一个页面上,我正在进行多个 AJAX 调用。所有调用都成功返回响应,但最后一个(与其他 ajax 调用无关)返回 500 内部服务器错误作为响应代码(如 Firebug 所说)。但是,尽管有错误代码
一直在尝试从我的 application/modules/module5/config/module.ini 中覆盖 phpSettings.display_errors。 我的 module5/Bo
由于我无法控制的原因,我无法在我的生产服务器上的 php.ini 中设置 display_errors=0 和 log_errors=1。我知道我可以设置 error_reporting(0); 以完
我是一名优秀的程序员,十分优秀!