Задание Cron не дает требуемого результата, но доступ к тому же файлу через браузер

Мне нужно запустить php script чтобы генерировать snapshots с помощью CutyCapt некоторых сайтов, использующих crone job, я получаю адрес веб-сайтов из базы данных, а затем удаляю эту запись после создания скриншотов. я использовал */5 * * * * /usr/bin/php -f /path/generate.phpэто не сработало для crone job но если я получу доступ к тому же файлу, используя browser он работает нормально, и если запустить этот скрипт с помощью команды php от command line это также работает отлично. Затем я просто создал другой файл и получил доступ к URL, используя file_get_contents; добавил этот файл в crone job в течение нескольких дней он работал нормально, но теперь этот подход также не работает. я не знаю что случилось я не изменил ни одного из этих файлов. Я тоже пробовал wget Команда, чтобы получить доступ к этому URL, но не удалось получить необходимые положить. мой crontab теперь выглядит так*/5 * * * * wget "http://www.mysite.com/generate.php" -O /dev/null

Странно то, что задача крона выполняется нормально, она извлекает данные из базы данных, а также удаляет записи, но не обновляет изображения.

Есть ли какие-либо проблемы с правами или чем-то похожим, что мешает генерировать изображения с помощью задания кроны, но не при доступе с помощью браузера

Пожалуйста, помогите, я застрял.

2 ответа

Я не знаю, что делает ваш скрипт внутри, но имейте в виду, что задания cron пользователя не наследуют среду пользователя. Таким образом, вы можете столкнуться с проблемой PATH, если ваш php-скрипт выполняет какие-либо команды оболочки.

Если вы запускаете команды оболочки из скрипта, попробуйте установить переменную окружения PATH из скрипта php и посмотреть, поможет ли это.

Есть ли на этой странице учетные данные пользователей, например обычная проверка подлинности? если это так, вы должны определить имя пользователя и пароль в запросе wget, как

wget  --http-user=user --http-password=password "http://url" ?

и попробуйте другое решение, запустив скрипт yor из командной строки php, чтобы ваш crontab мог выглядеть

*/5 * * * * /usr/bin/php -f /path/to/generate.php 

Попробуйте это решение, оно будет работать, и это лучше, чем ударить по серверу для выполнения фоновых операций с вашими данными.

и я надеюсь, что это поможет

Другие вопросы по тегам