1

Добрый день. Помогите решить проблему.

cron игнорирует настройки php.ini

В конфигурации прописано:  allow_url_fopen = On

А при запуске скрипта через крон все равно возвращает ошибку:
Warning: file(): URL file-access is disabled in the server configuration in /home/webmaster/www/...........

Помогите пожалуйста, где прописать конфигурацию для cron?

2

Manul пишет:

Помогите пожалуйста, где прописать конфигурацию для cron?

уточните вопрос. демон crond не имеет никакого отношения к интерпретатору php.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

3

Вобщем суть проблемы в том что при запуске скрипта через 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.

4

Manul пишет:

Помогите пожалуйста, очень нужно скачивать файлы через http:// с помощью cron.

А wget или curl не справляются?

Был, был и весь вышел...

5

Нет, нужно чтобы в определенное время это происходило. Потом скрипт производит конвертацию заданного файла в xml нужного формата.

6

Manul пишет:

Нет, нужно чтобы в определенное время это происходило. Потом скрипт производит конвертацию заданного файла в xml нужного формата.

И что мешает использовать wget именно для скачивания нужного вам файла?
Опишите подробнее задачу, приведите примеры исходного файла и конечного файлов — помощь будет оказать проще.

Был, был и весь вышел...

7

Manul пишет:

Вобщем суть проблемы в том что при запуске скрипта через cron

как вы запускаете php?

Manul пишет:

Нет, нужно чтобы в определенное время это происходило. Потом скрипт производит конвертацию заданного файла в xml нужного формата.

да. именно так и делайте: вместо обращения в браузере по адресу http://localhost/script.php качайте этот файл wget'ом. Тогда всё будет работать как надо.

И ещё - задавайте задания для crond командой crontab -e, от того-же юзверя, от которого браузер запускаете (и с того-же хоста).

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

8

Ну а если список файлов, которые нужно выкачивать - переменный (речь идет о копировании фотографий)?

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

drBatty пишет:

И ещё - задавайте задания для crond командой crontab -e, от того-же юзверя, от которого браузер запускаете (и с того-же хоста).


А от какого юзера обычно запускаются скрипты при запуске через браузер?

9

Manul пишет:

Ну а если список файлов, которые нужно выкачивать - переменный (речь идет о копировании фотографий)?

а вы в браузере задаёте переменный путь?

Manul пишет:

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

никто не заставляет менять пути В СКРИПТАХ.

Manul пишет:

А от какого юзера обычно запускаются скрипты при запуске через браузер?

браузер обращается на сервер apache, и этот сервер запускает apache, от имени юзера apache.

Конечно, на локальном компьютере браузер работает от другого юзера.

Я вам и рекомендую, "скачивать" скрипт. На самом деле, никакого script.php вам НЕ закачается.

Зайдите по ссылке: http://linuxforum.ru/search.php?action=show_new
Что вы увидите? разве вы скачаете файл search.php? нет. Вы скачаете HTML файл с новыми сообщениями этого форума. Который и покажет ваш браузер.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

10 (21.01.2011 21:29:50 отредактировано Manul)

Если от 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]);}

}

11

Manul пишет:

Если от apache выполнять

а если из браузера, то работает? а "из браузера" это от какого юзера?

Manul пишет:

В упрощенном варианте код такой:

и как вы его запускаете?

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

12 (22.01.2011 11:38:03 отредактировано Manul)

drBatty пишет:

а если из браузера, то работает? а "из браузера" это от какого юзера?

Вот этого я не знаю к сожалению. По идее это от юзера apache .

А запускаю через cron так:

MAILTO=936@mail.ru
00 14 * * * /usr/bin/php /home/webmaster/www/eip.php

13

Manul пишет:

Если от 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

14

Manul пишет:

А запускаю через cron так:

MAILTO=936@mail.ru
00 14 * * * /usr/bin/php /home/webmaster/www/eip.php

это чей crontab ?

Manul пишет:

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() ?

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

15

Все, разобрался. через wget все работает:

00 14 * * * /usr/bin/wget -O /dev/null -q http://xxxxxx.ru/script.php