Относительный путь, не работающий в Сценарии PHP крона

Если Сценарий PHP выполняется, поскольку сценарий крона, включение часто перестало работать, если относительные пути используются. Например, если Вы имеете

require_once('foo.php');

файл foo.php будет найден при выполнении на командной строке, но не, когда выполнено из сценария крона.

Типичное обходное решение для этого к первому chdir к рабочему каталогу или полным путям использования. Я хотел бы знать, однако, что отличается между кроном, и окружите, который вызывает это поведение. Почему это перестало работать при использовании относительных путей в сценарии крона?

48
задан Sjoerd 28 December 2009 в 03:03
поделиться

3 ответа

Рабочий каталог скрипта может быть отличным при запуске от CRON. Дополнительно, было некоторая путаница по поводу PHPS требует () и включает в себя (), что вызвало путаницу о рабочем каталоге действительно проблемой:

include('foo.php') // searches for foo.php in the same directory as the current script
include('./foo.php') // searches for foo.php in the current working directory
include('foo/bar.php') // searches for foo/bar.php, relative to the directory of the current script
include('../bar.php') // searches for bar.php, in the parent directory of the current working directory
12
ответ дан 7 November 2019 в 12:13
поделиться

Другая возможность заключается в том, что версия CLI использует другой php.ini файл. (По умолчанию он будет использовать php-cli.ini и откат к стандартному php.ini)

Также, если вы используете .htaccess файлы для установки пути к вашей библиотеке и т.д., это явно не сработает через клип.

.
3
ответ дан 7 November 2019 в 12:13
поделиться

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

.
1
ответ дан 7 November 2019 в 12:13
поделиться
Другие вопросы по тегам:

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