所以,我当前的网页中实际上没有任何错误,但我希望能够在它们弹出时看到错误,而不是HTTP 500错误页面。我用谷歌搜索了一下,认为添加这两行可以解决所有问题。
ini_set('display_errors', 'On');
error_reporting(E_ALL);
注意:我无法访问 php.ini 文件,因为我使用的是学校帐户的服务器。
所以我在页面顶部引入了一个错误($buggy后没有分号):
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$buggy
$x = 4 + 2;
...
但是,我只是收到服务器错误:
"该网站在检索 http://mywebpage.com/时遇到错误。它可能因维护而停机或配置不正确。
有什么想法吗?
编辑:
我已经重新配置了我的代码:
<?php
include_once 'database/errorSettings.php';
?>
<?php
$buggy // whoops
$x = 4 + 2;
...
错误设置.php如下:
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
?>
但它仍然不起作用...重新配置的方式错误?
你得到的是一个解析错误。这些在执行任何代码之前引发。在执行 PHP 文件中的任何代码之前,需要完整地解析该文件。如果在设置错误级别的文件中存在解析错误,则在引发错误时,这些错误不会生效。
要么将文件分解为较小的部分,例如在一个文件中设置错误级别,然后include
另一个包含实际代码(和错误)的文件,或者使用 php.ini 或 .htaccess 指令在 PHP 之外设置错误级别。
在.htaccess文件中设置error_reporting值。由于存在解析错误,因此它永远不会在 PHP 代码中运行 error_reporting() 函数。
在 .htaccess 文件中尝试此操作(假设您可以使用一个):
php_flag display_errors 1
php_value error_reporting 30719
我认为 30719 对应于E_ALL但我可能是错的。
编辑更新:http://php.net/manual/en/errorfunc.constants.php
int error_reporting ([ int $level ] )
---
32767 E_ALL (integer)
All errors and warnings, as supported, except of level E_STRICT prior to PHP 5.4.0. 32767 in PHP 5.4.x, 30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously
加上上面所说的。这是一个解析错误,因此为了调试解析错误,请在根目录中创建一个名为 debugSyntax.php 的新文件。把这个放进去:
<?php
/////// SYNTAX ERROR CHECK ////////////
error_reporting(E_ALL);
ini_set('display_errors','On');
//replace "pageToTest.php" with the file path that you want to test.
include('pageToTest.php');
?>
运行 debugSyntax.php 页,它将显示您选择测试的页面中的分析错误。
只需在 PHP 文件之上编写以下代码:
ini_set('display_errors','on');
外部服务器中不容易检查语法错误,只需检查运行时错误。
我做什么? 就像你一样,我使用
ini_set('display_errors', 'On');
error_reporting(E_ALL);
但是,在运行之前,我使用在线PHP语法检查器检查PHP文件中的语法错误。
最好的,恕我直言是 PHP 代码检查器
我复制所有源代码,粘贴到主框中,然后单击Analyze
按钮。
这不是最实用的方法,但这两个程序是互补的,它完全解决了问题
我在使用 PHP5.4 和 Plesk 11.5 时遇到了这个问题
不知何故,Plesk 域配置页面中的错误报告和显示错误设置完全覆盖了 .htaccess 或 PHP 脚本中的任何本地设置。我还没有找到防止这种情况发生的方法,因此请使用 Plesk 设置打开和关闭错误报告。
您的 php 中可能有阻止本地站点覆盖这些设置的设置.ini这些设置可能由服务器上使用的控制面板强制执行。
致使用Codeigniter的人(我在C3上):
索引.php文件覆盖 php.ini配置,以此类推索引.php文件,第 68 行:
case 'development':
error_reporting(-1);
ini_set('display_errors', 1);
break;
您可以更改此选项以设置所需的内容。以下是完整列表:
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
6143 E_ALL
2048 E_STRICT
4096 E_RECOVERABLE_ERROR
希望对您有所帮助。