У меня есть код PHP, который отлично работает в браузере, но теперь я хочу использовать тот же код и выполнять его из скрипта cron. У меня возникают проблемы.
я пробовал команду на cron wget -O /dev/null http://www.mydomain.com/test.php
но если я попробую это сделать в терминале, я получу ошибку ниже.
Какая правильная команда для запуска файла php из cron? и мне нужно добавить дополнительную строку кода в начало моего файла php?
У меня проблема
-bash-3.2$ wget -O /dev/null http://www.mydomain.com/test.php
--2012-04-08 15:59:41-- http://www.mydomain.com/test.php
Resolving www.mydomain.com... 46.***.***.1
Connecting to www.mydomain.com|46.***.***.1|:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2012-04-08 15:59:41 ERROR 403: Forbidden.
Я дал файлу 755 разрешений и даже 777 разрешений, но не вижу, что делаю неправильно.
Ваш веб-сервер не настроен для доступа к файлу, который вы пытаетесь загрузить. Вам необходимо решить эту проблему, прежде чем вы попытаетесь запустить эту загрузку из cron.
Во-первых, выясните, как настроен ваш веб-сервер. Если вы используете apache, вы сможете найти /etc/apache/httpd.conf
или /etc/apache2/httpd.conf
или похожие. Этот файл должен указать вам, как настроен ваш веб-сервер.
Во-вторых, проверьте журнал ошибок. Это должно быть что-то вроде /var/log/apache/error.log
. Этот файл должен содержать дополнительную информацию о причинах сбоя wget.
Устраните эту проблему. Как только вы запустите wget, вы можете попробовать запустить его в cron.
Также вы можете попробовать использовать curl вместо wget. Что-то вроде этого:
curl -s http://www.mydomain.com/test.php >/dev/null
тоже должно работать нормально. У меня нет веских причин отдавать предпочтение wget или curl в этом случае.
Вероятно, нет причин запускать его через запрос веб-сервера / клиента, и это добавляет ненужной сложности. Если для сценария PHP не требуется среда веб-сервера (например, $ _SERVER или $ _REQUEST), вам лучше запустить его напрямую.
Чтобы запустить PHP-скрипт прямо из cron:
1 * * * * /usr/bin/php /path/to/your/php/script.php