использования cron

  • Автор темы Автор темы andfm
  • Дата начала Дата начала

andfm

Новичок
использования cron

Уже запарился с попытками запустить php скрипт, помогите понять в чем дело. Скрипт лежит в папке \tet\mailtes.php. В cron-не прописанна команда * 1 * * * /usr/local/php /www/mysite/www/htdocs/tet/mailtest.php
cron возвращает "/usr/local/php: permission denied
", хотя на файл установленны права 755. Мой сайт хоститься на rbc.ru, служба поддержки уже неделю ничего не может вразумительно ответить.
 
для вызова РНР-скрипта добавьте строку #!/usr/local/bin/php -q в выполняемом файле (первой сторокой) вне тегов <? ?>, файл сохраните как Unix–текст

Так написано в инструкции у моего хостера. Думаю, может пригодиться.
Права доступа должны быть 755, тут все нормально.
 
спасибо, попробую. мне с тех поддержке ничего такого не писали
 
>/usr/local/php: permission denied
а ты имеешь право из крона РНР запускать?
 
Автор оригинала: svetasmirnova
>/usr/local/php: permission denied
а ты имеешь право из крона РНР запускать?
А как это узнать? имею или нет

-~{}~ 28.11.05 13:16:

Автор оригинала: Аntоn
для вызова РНР-скрипта добавьте строку #!/usr/local/bin/php -q в выполняемом файле (первой сторокой) вне тегов <? ?>, файл сохраните как Unix–текст

Так написано в инструкции у моего хостера. Думаю, может пригодиться.
Права доступа должны быть 755, тут все нормально.
Создал файл test.php сделал как вы сказали в самом начале указал #! и т.д. дак команду cron. B ничего не происходит, ошибки тоже не посылаются но и скрипт не выполняется. Этот скрипт должен послать email.
 
>А как это узнать? имею или нет
Спросить у поддержки. Можно попробовать запустить php из shell, но право на запуск из shell может не быть равным праву на запуск из cron. Проверь ещё права на папку.
>ошибки тоже не посылаются но и скрипт не выполняется
А точно не выполняется? Запущенным из командной строки РНР-скриптом почту можешь послать?
 
Автор оригинала: svetasmirnova
>А как это узнать? имею или нет
Спросить у поддержки. Можно попробовать запустить php из shell, но право на запуск из shell может не быть равным праву на запуск из cron. Проверь ещё права на папку.
>ошибки тоже не посылаются но и скрипт не выполняется
А точно не выполняется? Запущенным из командной строки РНР-скриптом почту можешь послать?
при запуске с браузера этот скрипт все выполняет как нужно.
 
из командной строки
Чувствуешь разницу? Хостинговая среда отличается от выделенной. Но на выделенной у тебя бы PHP из-под браузера работал бы с одними правами, а из cli с другими.
 
Да разницу я чувствую. Вообщем после долгой переписке служба поддержки обещала сегодня что то сделать, что мне поможет. Слов нету, сколько нервов мне это стоило.
 
Есть два пути запуска пхпшного файла через cron:
1) В кроне нужно указывать полный путь к php интерпретатору (по умолчанию это /usr/local/bin/php или это зависит от операционной системы и как сконфигурирован php в ней) + имя запускаемого файла + вывод в файл (необязательно). Пример:
* 1 * * * /usr/local/bin/php /www/mysite/www/htdocs/tet/test.php >> /www/mysite/www/htdocs/tet/cron.log

2) Можно в кроне указать только файл:
* 1 * * * /www/mysite/www/htdocs/tet/test.php >> /www/mysite/www/htdocs/tet/cron.log
Но тогда накладываются такие ограничения, файл test.php должен быть исполняемым (+x) и в начале этого файла должен быть путь к интерпретатору, в нашем случае это /usr/local/bin/php, т.е.
полная строка такая "#!/usr/local/bin/php"
как написал Anton. Обрати внимание, что если в конце будет стоять виндовый перевод строки, выдастся ошибка:
"file not found" или если запустить его вручную: "bad interpreter: No such file or directory"

Конечено же предварительно надо запустить файл вручную (из командной строки), чтобы проверить а работает ли он вообще.
Тестовый пример мог и не работать при неправильной настройке php или проблемы с почтовым сервисом в ОС, как показал опыт, функция mail даже при неудачной попытке отправки почты возвращает TRUE

Самый простой пример, сделай скрипт с выводом echo("Cron started " . date("Y/m/d H:i:s") . "\n")
а в крон запиши как я указал выше.
После запуска cron, cron.log будет каждый раз пополняться, кстати права на запись в папку tet должны стоять у того пользователя, под которым создан cron

Иногда бывает заблуждение у многих пользователей, если apache запущен под пользователем www, то и все что делается в php над файловой системой, также с правами www,
крон же обычно запускается под другим пользователем (допустим ваша учетная запись у провайдера)

Иногда это приводит к некоторым конфликтам на доступ к файлу, когда скрипт одновременно испльзуется и через Web и через Cron

Удачи!
 
Спасибо всем за поддержку! Оказалось что не работало по вине админов хостинга. Сейчас все нормально.
 
искал как это сделать...тема помогла :) но ещё больше сааппорт помог..ну напишу как у меня сейчас, мот кому и поможет
PHP:
cd /home/username/public_html/test/;/usr/local/bin/php -f test.php
 
Сверху