Добрый день. Помогите решить проблему.
cron игнорирует настройки php.ini
В конфигурации прописано: allow_url_fopen = On
А при запуске скрипта через крон все равно возвращает ошибку:
Warning: file(): URL file-access is disabled in the server configuration in /home/webmaster/www/...........
Помогите пожалуйста, где прописать конфигурацию для cron?
Cron игнорирует настройки php.ini
Помогите пожалуйста, где прописать конфигурацию для cron?
уточните вопрос. демон crond не имеет никакого отношения к интерпретатору php.
Вобщем суть проблемы в том что при запуске скрипта через cron не возможно получить доступ к файлам по http:// , то есть file('http://XXXXX.ru/base.dat') - возвращает ошибку:
Warning: file(): URL file-access is disabled in the server configuration in /home/webmaster/www/...........
А при запуске скрипта через браузер все нормально.
Помогите пожалуйста, очень нужно скачивать файлы через http:// с помощью cron.
Помогите пожалуйста, очень нужно скачивать файлы через http:// с помощью cron.
А wget или curl не справляются?
Нет, нужно чтобы в определенное время это происходило. Потом скрипт производит конвертацию заданного файла в xml нужного формата.
Нет, нужно чтобы в определенное время это происходило. Потом скрипт производит конвертацию заданного файла в xml нужного формата.
И что мешает использовать wget именно для скачивания нужного вам файла?
Опишите подробнее задачу, приведите примеры исходного файла и конечного файлов — помощь будет оказать проще.
Вобщем суть проблемы в том что при запуске скрипта через cron
как вы запускаете php?
Нет, нужно чтобы в определенное время это происходило. Потом скрипт производит конвертацию заданного файла в xml нужного формата.
да. именно так и делайте: вместо обращения в браузере по адресу http://localhost/script.php качайте этот файл wget'ом. Тогда всё будет работать как надо.
И ещё - задавайте задания для crond командой crontab -e, от того-же юзверя, от которого браузер запускаете (и с того-же хоста).
Ну а если список файлов, которые нужно выкачивать - переменный (речь идет о копировании фотографий)?
И к тому же не очень не хотелось бы менять пути в скриптах. Ведь на виртуальном хостинге все работало, а тут что-то не то, всетаки.
И ещё - задавайте задания для crond командой crontab -e, от того-же юзверя, от которого браузер запускаете (и с того-же хоста).
А от какого юзера обычно запускаются скрипты при запуске через браузер?
Ну а если список файлов, которые нужно выкачивать - переменный (речь идет о копировании фотографий)?
а вы в браузере задаёте переменный путь?
И к тому же не очень не хотелось бы менять пути в скриптах. Ведь на виртуальном хостинге все работало, а тут что-то не то, всетаки.
никто не заставляет менять пути В СКРИПТАХ.
А от какого юзера обычно запускаются скрипты при запуске через браузер?
браузер обращается на сервер apache, и этот сервер запускает apache, от имени юзера apache.
Конечно, на локальном компьютере браузер работает от другого юзера.
Я вам и рекомендую, "скачивать" скрипт. На самом деле, никакого script.php вам НЕ закачается.
Зайдите по ссылке: http://linuxforum.ru/search.php?action=show_new
Что вы увидите? разве вы скачаете файл search.php? нет. Вы скачаете HTML файл с новыми сообщениями этого форума. Который и покажет ваш браузер.
Если от apache выполнять то: Could not open input file: xxx.php Хотя с правами на выполнение вроде все впорядке.
А путь я задаю не переменный, а постоянный.
При запуске script.php url адреса фотографий берутся из http://xxxxx.ru/index.php
В упрощенном варианте код такой:
$file=file('http://xxxxx.ru/index.php');
for($z=0;$z<sizeof($file);$z++) {unset($foto); $foto = explode("|", $file[$z]);
for($y=0;$y<sizeof($foto);$y++) {copy('http://xxxx.ru/foto/'.$foto[$y], 'foto/'.$foto[$y]);}
}
Если от apache выполнять
а если из браузера, то работает? а "из браузера" это от какого юзера?
В упрощенном варианте код такой:
и как вы его запускаете?
а если из браузера, то работает? а "из браузера" это от какого юзера?
Вот этого я не знаю к сожалению. По идее это от юзера apache .
А запускаю через cron так:
MAILTO=936@mail.ru
00 14 * * * /usr/bin/php /home/webmaster/www/eip.php
Если от apache выполнять то: Could not open input file: xxx.php
С этим разобрался: все таки дело в правах было, но в итоге запуская cron от пользователя apache получаю тоже самое:
Warning: file(): URL file-access is disabled in the server configuration in /home/webmaster/www/yyyyyy.ru/script.php on line 161
Warning: file(http://xxxxx.ru/base.dat): failed to open stream: no suitable wrapper could be found in /home/webmaster/www/yyyyyy.ru/script.php on line 161
это чей crontab ?
Warning: file(): URL file-access is disabled in the server configuration in /home/webmaster/www/yyyyyy.ru/script.php on line 161 Warning: file(http://xxxxx.ru/base.dat): failed to open stream: no suitable wrapper could be found in /home/webmaster/www/yyyyyy.ru/script.php on line 161
вам не кажется странным открывать URL функцией file() ?
Все, разобрался. через wget все работает:
00 14 * * * /usr/bin/wget -O /dev/null -q http://xxxxxx.ru/script.php