如何在nginx php config中启用错误报告

如何在nginx php config中启用错误报告,php,config,reporting,Php,Config,Reporting,我已经尝试了三天,现在启用PHP中的错误报告。我已经使用ini\u集合(“显示错误”1)过了一段时间函数,直到我尝试连接到数据库;它不起作用。现在,我已经启用了错误报告,显示启动错误,记录错误,对错误报告没有任何影响。我已经更改了所有五个配置文件(开发ini、生产ini、位于php/7.0/cli、php/7.0/fpm中的php.ini文件,甚至是apache2中的配置文件(尽管我正在运行nginx) 我开始怀疑自己的能力,非常感谢您的帮助 编辑:我在我的文件中使用了上面描述的ini_set函

我已经尝试了三天,现在启用PHP中的错误报告。我已经使用
ini\u集合(“显示错误”1)过了一段时间函数,直到我尝试连接到数据库;它不起作用。现在,我已经启用了
错误报告
显示启动错误
记录错误
,对错误报告没有任何影响。我已经更改了所有五个配置文件(开发ini、生产ini、位于php/7.0/cli、php/7.0/fpm中的php.ini文件,甚至是apache2中的配置文件(尽管我正在运行nginx)

我开始怀疑自己的能力,非常感谢您的帮助

编辑:我在我的文件中使用了上面描述的ini_set函数,它一直工作到我尝试连接到DB。我已经确认我已经为phpinfo()函数目录路径中描述的php.ini文件启用了错误报告。没有任何效果。

尝试:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
错误报告本身
ini\u集('display\u errors',1);
display\u errors

只允许PHP输出错误-对调试很有用,强烈建议在生产环境中禁用。它通常包含用户永远不希望看到的信息

错误报告(E_ALL);
错误报告

只需精确设置显示的错误

设置其中一项不能保证显示错误。必须同时设置这两项才能在屏幕上看到错误。

至于在您的PHP配置中永久设置此项,
error\u reporting
的默认值为E\u ALL&~E\u NOTICE&~E\u STRICT&~E\u DEPRECATED。也就是说,此变量不需要更改。请参见此处:

关于显示错误,请参见此处:

根据需要,将“显示错误”的配置值设置为
stderr
stdout

只需在
php.ini
文件中更改这些变量,您将获得金牌。请绝对确保
display\u errors
error\u reporting
都设置为令人满意的值。仅设置
error\u reporting
不能保证您看到正在查找的错误


除了连接到我的数据库时,错误报告在任何地方都有效! 如果您在需要的任何地方都看到错误(数据库连接中除外),则只需执行一些错误捕获。如果是PDO,请执行以下操作:

try {
    $this->DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    $this->DBH->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $STH = $this->DBH->prepare("INSERT INTO `" . $this->table . "` ($fs) value ($ins) $up");
            
    $STH->execute($data);
            
    $id = $this->DBH->lastInsertId();
            
    $this->closeDb();
            
    return $id;
} catch(PDOException $e) {
    echo $e->getMessage();
}
这只是我的框架中的一个片段。当然,您必须根据自己的喜好对其进行更改,但您应该能够从中获得大致的想法。这里的关键是这一部分:

try {
    //DB Stuff
} catch(PDOException $e) {
    echo $e->getMessage();
}

我仍然没有看到错误 如果您已经完成了我在这里列出的两项操作,但仍然遇到问题,您的问题与启用错误报告无关。。提供的代码将显示数据库连接本身以及PHP代码内部的错误。如果没有显示您正在跟踪的错误,则您一定会遇到完全不同的问题


你可能需要更准确地描述你在追求什么,以及你期望看到什么。

因为没有人特别给出答案,我只能自己发布

我在这个目录中找到了error.log文件(它确实记录了我的Nginx服务器上的所有错误):
/var/log/Nginx/error.log

希望这也能帮助其他使用Nginx的人,但我仍然不明白为什么浏览器中没有显示****错误。我认为Nginx的本性是让一切变得非常复杂

也许我应该使用Apache进行开发,然后在我有更多经验的时候将其移植到Nginx中——这也是我对其他人的一些想法


我只是想更新一下:从PHP7.0.2升级到PHP7.0.2可能会对您有所帮助
在文件/etc/php/7.0/fpm/pool.d/www.conf中(例如默认情况下禁用值display\u errors)

在大多数情况下,您只需在脚本的开头添加:
ini\u set('display\u errors',1);error\u reporting(E\u ALL);
并以这种方式显示错误。如果您想通过配置执行此操作,请创建一个
phpinfo()
script,查看加载哪个配置文件的位置并更改该文件,直到
phpinfo()
显示错误报告并显示您想要的错误。您可能的重复将我带回到我开始的地方:谢谢,我将继续搜索答案!您使用什么命令连接数据库?如果您没有看到错误,则
错误报告
显示错误
都未正确设置。请执行以下操作:测试:
echo HELLO;如果(array\u key\u存在($a,$b))echo“HELLO”
您看到警告了吗?如果没有,您的配置绝对没有正确设置。如果是这样,那是您的DB适配器。您必须执行错误捕获。这并不总是有效。我需要一个永久性的解决方案,包括修改我的php配置。不过,谢谢。关于PDO的说明不明确。操作说明错误报告在DB connec上失败你的解释(可能正确)db连接是PDO,但您的示例不是关于PDO连接,而是关于连接后的PDO命令。事实上,错误报告对PDO建立连接有影响。我遵循了您帖子中的所有内容,但它仍然不起作用。我想知道这是否与我运行nginx?@fusion3k有关,如果连接不起作用简单的
error\u reporting
display\u errors
在尝试调用像
prepare()
execute()
这样的PDO方法时将显示错误。您的评论与我提供的代码无关,因为无论情况如何,
prepare()
execute()上的方法错误
(等)表示您从未建立过连接-这很简单。此外,我还提供了一个<