Назад | Перейти на главную страницу

Проблемы с включением PHP из командной строки (или cronjob)

Я пытаюсь настроить cronjob на своем экземпляре AWS EC2. Нет ничего плохого в фактической записи в файле crontab, но когда я пытаюсь запустить команду в командной строке, я получаю такой ответ.

PHP Warning:  include(../scripts/connect.php): failed to open stream: No such file or directory in /var/www/htdocs/crons/emailnotifications.php on line 2
PHP Warning:  include(): Failed opening '../scripts/connect.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/htdocs/crons/emailnotifications.php on line 2
PHP Warning:  include(../scripts/functions.php): failed to open stream: No such file or directory in /var/www/htdocs/crons/emailnotifications.php on line 3
PHP Warning:  include(): Failed opening '../scripts/functions.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/htdocs/crons/emailnotifications.php on line 3
PHP Warning:  strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for 'UTC/0.0/no DST' instead in /var/www/htdocs/crons/emailnotifications.php on line 4
PHP Warning:  mysql_query(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /var/www/htdocs/crons/emailnotifications.php on line 6
PHP Warning:  mysql_query(): A link to the server could not be established in /var/www/htdocs/crons/emailnotifications.php on line 6
PHP Warning:  mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /var/www/htdocs/crons/emailnotifications.php on line 7

Я могу загрузить эту страницу в свой браузер, и она отлично работает, но не из командной строки (или cronjob).

включить (../ scripts / connect.php)

Ваш сценарий использует относительный каталог. Они связаны с текущим рабочим каталогом. Когда cron работает, ваш CWD почти наверняка не такой, как вы думаете. Либо установите CWD в свой cron-скрипт, либо обновите свой PHP-код, чтобы использовать путь относительно себя. Что-то вроде include(realpath(dirname(__FILE__).'/../scripts/connect.php')) возможно?

Остальные ваши проблемы также, почти наверняка, связаны с тем, что конкретная среда вашего сеанса cron отличается от среды, в которой веб-сервер запускает скрипт. Найдите отличия и исправьте их.