PHP включен в работу cron

Я пытаюсь настроить PHP-файл как задание cron, где этот PHP-файл содержит другие файлы PHP.

Сам файл находится по адресу /var/www/vhosts/domain.com/httpdocs/app/protected/classes/cron/runner.php

Включенный файл находится в /var/www/vhosts/domain.com/httpdocs/app/protected/config.php

Как включить этот файл конфигурации из runner.php? Я попытался сделать require_once ('../../ config.php'), но он сказал, что файл не существует. Предполагаю, что cron запускает PHP из другого места или чего-то еще.

Задача cron следующая.

/ usr / bin / php -q /var/www/vhosts/domain.com/httpdocs/app/protected/classes/cron/runner.php

Есть предположения?

Solutions Collecting From Web of "PHP включен в работу cron"

Ваш cron должен изменить рабочий каталог перед запуском PHP:

cd /var/www/vhosts/domain.com/httpdocs/app/protected/classes/cron/ && /usr/bin/php -q runner.php 

Обратите внимание: если каталог не существует, PHP не будет запускать runner.php.

Вы должны использовать абсолютный путь. Вероятно, cron не запускает скрипт из каталога, в котором он находится.

Я рекомендую использовать:

require_once( dirname(__FILE__) '../../config.php )

__FILE__ – это специальная константа, которая относится к файлу, в котором вы находитесь. dirname(...) предоставит вам каталог, который будет оценивать абсолютный путь к файлу, который вы хотите включить.

Является ли классы или cron символической ссылкой? Кажется, я помню, что php оценивает реальный путь вместо символического пути.

Рассмотрим следующее дерево каталогов:

/target/index.php

/ path / sym -> / target

если вы должны были выполнить php index.php из /path/sym то инструкция require_once('../require.php'); будет оценивать require_once('/require.php'); not require_once('/path/require.php');

Вы можете изменить рабочий каталог внутри вашего скрипта PHP на расположение этого скрипта: chdir(__DIR__); (или, если ваша версия PHP до 5.3: chdir(dirname(__FILE__)); ) Затем вы можете сделать: require_once('../../config.php')