Cron задача. Проблема с запуском скрипта

Pre Scriptum. На пхп я не кодил от слова совсем.

Написал небольшой скрипт на php для парсинга отзывов с сайта яндекса. Скрипт подключает библиотеку phpQuery, отправляет запрос, дальше foreach - ом пробегаюсь по массиву из dom и создаю json файл. В случае если появились новые отзывы, то скрипт сравнивает их с записанными отзывами и если их нет, то дописывает в конец файла.

Инклуд билиотеки: include './phpQuery-onefile.php';

Запрос к яндексу: $html = file_get_contents($url);

Чтение существующего файла: $output_file = file_get_contents($out_path);

И запись: file_put_contents($out_path, json_encode($result, JSON_UNESCAPED_UNICODE));

Out_Path: $out_path = './public_html/reviews.json';

Разрабатывал на open_server, но также проверил скрипт на xampp. На локалке все отлично работает, файл дописывается.

Далее перенес скрипт на хостинг создал cron задачу. Файл скрипта и библиотеки закинул в корневую папку, а файл reviews.json закинул в public_html. (т.к. к json буду обращаться из сайта) введите сюда описание изображения

При запуске скрипта он падает с ошибкой exit 255. Обратился в службе поддержки, но там ничем не смогли помочь. Хостинг - beget. Аналогично закинул, кхм..., на timeweb - там вообще не пишутся ошибки ну и файл не обновляется.

Подскажите пожалуйста, в чем может быть проблема и где косяк?

UPD. Beget сказали, что проблем с запросами на сторонние ресурсы нет, а в логах появляется ошибка:

Fatal error: Uncaught Error: Class 'phpQuery' not found in...

в этой строке: $dom = phpQuery::newDocument($html);

Что с ней не так - надо по-другому использовать пространство имен ? или в cron нет возможности заинклудить библиотеку?

Спасибо!


Ответы (1 шт):

Автор решения: vp_arth

Всегда используйте абсолютные пути для include/require:

require_once __DIR__ . '/phpQuery-onefile.php';

При запуске из CRON(и не только), текущая директория(./) не та, какую вы ожидаете.

→ Ссылка