PHP: Потребуйте, чтобы путь не работал на задание крона?

У меня есть задание крона, которое должно включать этот файл:

require '../includes/common.php';

однако, когда это выполняется через задание крона (и не мое локальное тестирование), относительный путь не работает. прогоны задания крона следующий файл (на живом сервере):

/home/username123/public_html/cron/mycronjob.php

и вот ошибка:

Fatal error: require(): Failed opening required '../includes/common.php' 
(include_path='.:/usr/lib/php:/usr/local/lib/php') in 
/home/username123/public_html/cron/mycronjob.php on line 2

использование того же абсолютного формата как задание крона, common.php был бы расположен в

/home/username123/public_html/includes/common.php

делает это означает, что я должен заменить свою строку 2:

require '/home/username123/public_html/includes/common.php';

?

спасибо!

23
задан gsquare567 25 June 2010 в 14:16
поделиться

4 ответа

Технически php-скрипт запускается там, где находится cron; например. Если бы cron находился в /bin/cron, то этот оператор искал бы common.php в /bin/includes/common.php.

Так что да, вам, вероятно, придется использовать полные пути или использовать set_include_path

set_include_path('/home/username123/public_html/includes/');
require 'common.php';
27
ответ дан 29 November 2019 в 01:16
поделиться

nono. вам нужно использовать абсолютные пути в crons.

вот что я делаю:

// supouse your cron is on app/cron and your lib is on app/lib
$base = dirname(dirname(__FILE__)); // now $base contains "app"

include_once $base . '/lib/db.inc';

// move on
26
ответ дан 29 November 2019 в 01:16
поделиться

Если относительный путь не работает, это означает, что текущий каталог, установленный при выполнении задач cron, не является / home / username123 / public_html. В таких случаях можно использовать только абсолютный путь.

0
ответ дан 29 November 2019 в 01:16
поделиться

Это звучит так просто, как если бы какой-то сценарий, который вы запускали, устанавливает include_path, и вы включаете этот сценарий. используйте phpinfo (), чтобы проверить глобальную или локальную настройку include_path.

0
ответ дан 29 November 2019 в 01:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: