Запуск PHP-файла из Crontab, который включает require_once ()

Я пытаюсь запустить php-файл из crontab. Цель php – просто отправить электронное письмо пользователю. Включая файлы заголовков моей инфраструктуры php. Но у crontab, похоже, проблема с путями. Я попытался изменить его на абсолютный путь .. см. Примеры тестов ниже.

Использование require_once(http://www.test.com/inc/header.php) и запуск php -f test.php в командной строке приводит к:

 PHP Warning: require_once(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in /home/user/public/test.com/public/deploy/cron/test.php on line 3 PHP Warning: require_once(http://www.test.com/inc/header.php): failed to open stream: no suitable wrapper could be found in /home/user/public/trybe-ing.com/public/deploy/cron/test.php on line 3 PHP Fatal error: require_once(): Failed opening required 'http://www.test.com/inc/header.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/user/public/test.com/public/deploy/cron/test.php on line 3 

Использование require_once('../../inc/header.php'); и запуск php -f test.php в командной строке приводит к успешному выполнению файла php.

Но глядя на вкладку cron:

 */1 * * * * php /home/user/public/test.com/public/deploy/cron/test.php 

И, глядя на результаты в / var / mail /, он возвращает эту ошибку:

 Message 23: From user@server Thu Jun 25 13:13:02 2015 X-Original-To: user From: root@user (Cron Daemon) To: chrismoore@ibrahimovic Subject: Cron <user@server> php /home/user/public/test.com/public/deploy/cron/test.php Content-Type: text/plain; charset=UTF-8 X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/home/user> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=user> Date: Thu, 25 Jun 2015 13:13:02 +0100 (BST) PHP Warning: require_once(../../inc/header.php): failed to open stream: No such file or directory in /home/user/public/trybe-ing.com/public/deploy/cron/test.php on line 3 PHP Fatal error: require_once(): Failed opening required '../../inc/header.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/user/public/test.com/public/deploy/cron/test.php on line 3 

Кажется, что crontab не может запустить php-файл, как при запуске из командной строки. Как я могу заставить это работать?

Вы видите, что я делаю неправильно, и предлагаю решение?

Thnnks

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

 require_once(__DIR__ . '/../../inc/header.php'); 

Таким образом, он будет необходим с полным путем и работой из любого каталога без необходимости сначала перейти на рабочий каталог вашего PHP-файла.

Другим способом было бы изменить ваш кронтаб на

 */1 * * * * cd /home/user/public/test.com/public/deploy/cron && php test.php