在不更改 php.ini 的情况下为 PHP 错误输出 STDERR
Output a STDERR for PHP errors without changing php.ini
我有一些 PHP 脚本,每分钟 运行 通过 CRON。我不想每次他们 运行 正确时都收到电子邮件,但如果他们抛出错误(例如,如果他们使用太多内存),我确实希望收到一封电子邮件。
至 运行 CRON:
-
-
-
-
- php myscript.php >/dev/null
只有当 stderr
的结果不为空时才应该发送电子邮件,即当存在标准错误时。
但是,PHP 错误不会创建 stderr
,而是包含在 stdout
中,因此不会发送电子邮件。
我已尝试将 display_errors
设置为 stderr
,如 this question 所示,但这是一个不同的用例,因为脚本不是 CRON 运行。我尝试了以下但没有用的方法:
将此包含在脚本本身中不起作用,因为致命错误意味着脚本不会 运行:
ini_set ('display_errors', 'stderr');
将其包含在 .htaccess 文件中(注意 PHP 使用了 FPM)不起作用 - 我不确定为什么:
php_flag display_errors stderr
更改 php.ini 文件不是一个选项,因为我不希望更改影响整个站点,只影响几个文件。
所以我的问题是 - 如何将 PHP 错误发送到 stderr
以便我可以通过电子邮件接收它们?
php
可执行文件采用命令行选项 - 您可以指定 它应该使用哪个 php.ini,或者通过 [=] 设置特定的配置选项11=] 参数.
https://www.php.net/manual/en/features.commandline.options.php
我有一些 PHP 脚本,每分钟 运行 通过 CRON。我不想每次他们 运行 正确时都收到电子邮件,但如果他们抛出错误(例如,如果他们使用太多内存),我确实希望收到一封电子邮件。
至 运行 CRON:
-
-
-
-
- php myscript.php >/dev/null
-
-
-
只有当 stderr
的结果不为空时才应该发送电子邮件,即当存在标准错误时。
但是,PHP 错误不会创建 stderr
,而是包含在 stdout
中,因此不会发送电子邮件。
我已尝试将 display_errors
设置为 stderr
,如 this question 所示,但这是一个不同的用例,因为脚本不是 CRON 运行。我尝试了以下但没有用的方法:
将此包含在脚本本身中不起作用,因为致命错误意味着脚本不会 运行:
ini_set ('display_errors', 'stderr');
将其包含在 .htaccess 文件中(注意 PHP 使用了 FPM)不起作用 - 我不确定为什么:
php_flag display_errors stderr
更改 php.ini 文件不是一个选项,因为我不希望更改影响整个站点,只影响几个文件。
所以我的问题是 - 如何将 PHP 错误发送到 stderr
以便我可以通过电子邮件接收它们?
php
可执行文件采用命令行选项 - 您可以指定 它应该使用哪个 php.ini,或者通过 [=] 设置特定的配置选项11=] 参数.
https://www.php.net/manual/en/features.commandline.options.php