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

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, служба поддержки уже неделю ничего не может вразумительно ответить.
 

Аntоn

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

Так написано в инструкции у моего хостера. Думаю, может пригодиться.
Права доступа должны быть 755, тут все нормально.
 

andfm

Новичок
спасибо, попробую. мне с тех поддержке ничего такого не писали
 

svetasmirnova

маленький монстрик
>/usr/local/php: permission denied
а ты имеешь право из крона РНР запускать?
 

andfm

Новичок
Автор оригинала: 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.
 

svetasmirnova

маленький монстрик
>А как это узнать? имею или нет
Спросить у поддержки. Можно попробовать запустить php из shell, но право на запуск из shell может не быть равным праву на запуск из cron. Проверь ещё права на папку.
>ошибки тоже не посылаются но и скрипт не выполняется
А точно не выполняется? Запущенным из командной строки РНР-скриптом почту можешь послать?
 

andfm

Новичок
Автор оригинала: svetasmirnova
>А как это узнать? имею или нет
Спросить у поддержки. Можно попробовать запустить php из shell, но право на запуск из shell может не быть равным праву на запуск из cron. Проверь ещё права на папку.
>ошибки тоже не посылаются но и скрипт не выполняется
А точно не выполняется? Запущенным из командной строки РНР-скриптом почту можешь послать?
при запуске с браузера этот скрипт все выполняет как нужно.
 

svetasmirnova

маленький монстрик
из командной строки
Чувствуешь разницу? Хостинговая среда отличается от выделенной. Но на выделенной у тебя бы PHP из-под браузера работал бы с одними правами, а из cli с другими.
 

andfm

Новичок
Да разницу я чувствую. Вообщем после долгой переписке служба поддержки обещала сегодня что то сделать, что мне поможет. Слов нету, сколько нервов мне это стоило.
 

SaNo

Новичок
Есть два пути запуска пхпшного файла через 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

Удачи!
 

andfm

Новичок
Спасибо всем за поддержку! Оказалось что не работало по вине админов хостинга. Сейчас все нормально.
 

Юра

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