PHP: Требовать, чтобы путь не работал для работы cron?

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

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

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

 /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 

используя тот же абсолютный формат, что и задание cron, common.php будет располагаться по адресу

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

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

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

?

благодаря!

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

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

 set_include_path('/home/username123/public_html/includes/'); require 'common.php'; 

нет нет. вам нужно использовать абсолютные пути на коронках.

что я делаю:

 // 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 

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

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

Альтернативой решениям, которые рекомендуют спецификацию абсолютного пути, является использование chdir в вашем скрипте. Таким образом, ваши относительные пути будут работать должным образом.

Например, чтобы перейти в каталог скрипта:

 $curr_dir = dirname(__FILE__); chdir($curr_dir); 

Чтобы перейти к родительскому каталогу скрипта:

 $curr_dir = dirname(__FILE__); chdir($curr_dir . "/.."); 

И так далее.