Вывести STDERR для PHP ошибок без изменения php .ini - PullRequest
0 голосов
/ 03 августа 2020

У меня есть несколько PHP скриптов, которые запускаются каждую минуту через CRON. Я не хочу получать электронные письма каждый раз, когда они работают правильно, но я хочу получать электронные письма, если они выдают ошибку (например, если они используют слишком много памяти).

Для запуска CRON:

          • php myscript. php> / dev / null

Это должно отправлять электронное письмо, только если результат stderr не равен нулю, т.е. когда есть стандартная ошибка .

Однако ошибки PHP не создают stderr, вместо этого они включаются в stdout, поэтому электронное письмо не отправляется.

Я пробовал установить display_errors на stderr, как показано в этом вопросе , но это другой вариант использования, поскольку скрипты не запускаются CRON. Я пробовал следующее, что не помогло:

включение этого в сам скрипт не работает, потому что фатальные ошибки означают, что скрипт не запускается:

ini_set ('display_errors', 'stderr');

включая это в файл .htaccess (примечание PHP используется FPM) не работал - я не уверен, почему:

php_flag display_errors stderr

Изменение файла php .ini не является вариантом, потому что я не Я не хочу, чтобы изменение повлияло на весь сайт, всего на несколько файлов.

Итак, мой вопрос - как можно отправить PHP ошибки на stderr, чтобы я мог получать их по электронной почте?

1 Ответ

1 голос
/ 03 августа 2020

Исполняемый файл php принимает параметры командной строки - вы можете либо указать , какой php .ini он должен использовать, либо установить определенные параметры конфигурации c с помощью параметра -d.

https://www.php.net/manual/en/features.commandline.options.php

...