@gomerIT

Как настроить cron для запуска php скрипта?

Всем привет, столкнулся с проблемой выполнения скрипта с помощью cron.
test.php

<?php
define('ROOT', $_SERVER['DOCUMENT_ROOT']);
require_once ROOT . '/core/DB.php';
...

Если перейти по url, то скрипт успешно отработает.
Поставил такую команду для cron

/usr/bin/php /var/www/user/data/www/domain/modules/test.php

В результате выполнения cron, он мне выводится ошибка:


PHP Warning: require_once(/core/DB.php): failed to open stream: No such file or directory in /var/www/user/data/www/domain.ru/modules/test.php on line 3
PHP Fatal error: require_once(): Failed opening required '/core/DB.php' (include_path='.:/usr/share/php') in /var/www/user/data/www/domain.ru/modules/test.php on line 3

Как я понял он пытается подключить /core/DB.php относительно папки modules. Как мне решить данную задачу?
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ответы на вопрос 2
niremizov
@niremizov
CEO, предприниматель
$_SERVER['DOCUMENT_ROOT']:

* при запуске через крон/консоль (cli) - пустая
* при запуске через веб сервер - содержит путь к корневой директории сервера (видимо в Вашем случае это /usr/bin/php /var/www/user/data/www/domain/)
* подробнее тут

Для получения текущей директории можно использовать:

* __DIR__ - возвращает путь к текущему файлу (скрипту)
* getcwd() - возвращает текущую рабочую директорию
* подробнее о разнице между способами тут
Ответ написан
Комментировать
Fernus
@Fernus
Техник - Механик :)
Используйте __DIR__ для получения текущего каталога..и относительно него подключайте скрипты при запуске из командной строки...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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