У меня есть PHP скрипт, который вызывается каждую минуту с помощью кронтаб, как это:PHP `Exec()` не работает при запуске от Cron
* * * * * /usr/bin/php /var/www/html/cronjobs/watchdog/watchdogExec.php
Скрипт выполняет ряд других сценариев PHP и проходит переменная так:
$ccmd = "nohup sudo /usr/bin/php watchdog.php " . $var . " &";
exec($ccmd);
При вызове из браузера, watchdogExec.php прекрасно работает и делает свою работу. Однако, когда я добавил cronjob, скрипт не работает и спам письма со следующей ошибкой:
No entry for terminal type "unknown";
using dumb terminal settings.
Эта ошибка появляется такое же число раз exec()
называется, поэтому я решил, что должен быть вопрос. Я искал и читал о том, что cronjob не запускает команды в терминале, и я попытался настроить среду в crontask, но это не помогло. По-видимому, PHP печатает эту ошибку, но я ничего не нашел в их документации об этом.
* * * * * /usr/bin/env TERM=xterm /usr/bin/php /var/www/html/cronjobs/watchdog/watchdogExec.php
Я бегу CentOS 7.
Edit:
Искал некоторые и узнали о переменных окружения PHP. Кто-то исправил аналогичную проблему, добавив следующее в свой PHP-скрипт. Однако это не исправление моей проблемы, оно только останавливает спам почты. Сценарий все еще не работает.
putenv('SHELL=/bin/bash');
putenv('TERM=xterm');
Добавить отладочный вывод в скрипт, ** это не работает ** является расплывчатым ... – maxhb
Что '$ var' равный в коде? (найдите строку, начинающуюся с '$ var =') – Mike
@Mike это не связано, это целое число из базы данных. Скрипт запускается при вызове из браузера, это отсутствие терминала в cron, вызывающего это. – aron9forever