@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. Как мне решить данную задачу?
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ответы на вопрос 2
niremizov
@niremizov
CEO, предприниматель
$_SERVER['DOCUMENT_ROOT']:

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

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

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

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

Войти через центр авторизации
Похожие вопросы