LinuxForum.Fans
Тема

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

Автор: Manul 15 сообщений 7819 просмотров
#118751

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

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

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

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

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

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

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

#118974

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

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

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

#119060

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

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

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

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

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

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

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

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

#119110

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

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

drBatty написал:

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

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

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

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

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

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

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

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

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

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

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

#119514

Если от apache выполнять то: Could not open input file: xxx.php Хотя с правами на выполнение вроде все впорядке.

А путь я задаю не переменный, а постоянный.

При запуске script.php url адреса фотографий берутся из http://xxxxx.ru/index.php

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

text

$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]);}

}

#119546
Manul написал:
Если от apache выполнять

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

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

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

#119643
drBatty написал:
а если из браузера, то работает? а "из браузера" это от какого юзера?

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

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

text

MAILTO=936@mail.ru
00 14 * * * /usr/bin/php /home/webmaster/www/eip.php
#119740
Manul написал:
Если от apache выполнять то: Could not open input file: xxx.php

С этим разобрался: все таки дело в правах было, но в итоге запуская cron от пользователя apache получаю тоже самое:

text

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

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

#119845

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

text

00 14 * * * /usr/bin/wget -O /dev/null -q http://xxxxxx.ru/script.php
Войдите или зарегистрируйтесь, чтобы ответить.