2015-06-25 9 views
1

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

Использование 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 осуществляется успешно.

Но, глядя на мой счет хрон:

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

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

Message 23: 
From [email protected] Thu Jun 25 13:13:02 2015 
X-Original-To: user 
From: [email protected] (Cron Daemon) 
To: [email protected] 
Subject: Cron <[email protected]> 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 

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

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

Thnnks

+0

вы можете показать свою структуру папок? – jagad89

+1

Ответ Oldskool прав - случайно 'require_once()' всегда будет требовать путь к файлу, а не URL (если вы не измените этот параметр, упомянутый в сообщении об ошибке, который я бы не рекомендовал) – d0ug7a5

+0

Посмотрите [здесь] (http : //stackoverflow.com/questions/6649104/require-once-php-error) – jagad89

ответ

7

Try включая файл с его полным путем, используя __DIR__magic constant:

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

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

+0

Я думаю, что мои головы течет. Спасибо за быстрый ответ. Я поддержал и отметил это как ответ. Еще раз спасибо. – cwiggo

0

Другой способ будет изменить свой кронтаб к

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