[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: cron jobs проблема с файлом
flinth
Предыстория: есть файл рассылки писем юзерам, хотел чтоб через крон запускался. Чтобы его не мог включить каждый встречный-поперечный добавил "защиту" в виде гет запроса с хешем, если есть то отправляет.

Суть проблемы: Сделал в кроне таск: 1 раз в день отправлять
/usr/bin/php -q /home/username/public_html/file.php?get=get

Извещает меня о том что файла нет (No input file specified.). При удалении ?adm=... проблема отпадает. Как сделать чтобы гет запрос передавался всетаки через крон и если нельзя то как можно обезопасить скрипт рассылки от внешних?



Спустя 3 часа, 20 минут, 16 секунд (24.01.2012 - 11:15) Leningrad00 написал(а):
Для get-запросов в Cron используют доп. вооружение:

* * * * * /usr/bin/wget '/home/username/public_html/file.php?get=get'

Здесь /usr/bin/wget - путь до программы wget (или get).

Спустя 2 часа, 24 минуты, 45 секунд (24.01.2012 - 13:40) killer8080 написал(а):
flinth
GET - это составная часть http запроса, при запуске в консоли его по определению нет и быть не может. wget, curl и прочие кастыли вместо запуска скрипта выполняют http запрос к серверу, чтобы заставить его выполняться в веб режиме. В консоли то же можно передавать параметры запуска
/usr/bin/php -q /home/username/public_html/file.php get

Параметры запуска скрипта читаются из $_SERVER['argv']

Спустя 6 минут, 26 секунд (24.01.2012 - 13:46) asokol написал(а):
flinth, достаточно проверить, что $_SERVER['DOCUMENT_ROOT'] не определено.

Спустя 8 минут, 19 секунд (24.01.2012 - 13:55) Xes написал(а):
wget -O - -q http://test1.ru
Так есть возможность запускать. Работает ли она у вас....

Спустя 21 минута, 37 секунд (24.01.2012 - 14:16) killer8080 написал(а):
Цитата (asokol @ 24.01.2012 - 12:46)
flinth, достаточно проверить, что массив $_SERVER не определен.

Массив $_SERVER определен всегда.

Спустя 4 минуты, 39 секунд (24.01.2012 - 14:21) asokol написал(а):
Каюсь, был не прав. Поправлю ошибочное утверждение.

Спустя 21 час, 40 минут, 13 секунд (25.01.2012 - 12:01) flinth написал(а):
спасибо за ответы но опять трабл. Вот команда:
/usr/bin/php -q /usr/bin/wget "http:/domain.com/filename.php?get=info"
Пробовал и другой путь подставлять, и без кавычек. Приходит письмо с не читаемой инфой "?? ?? @ ? ???@ ? ? ? ?  ? ? ?     ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  ? ? ?  ?? ? ? ? ?  ?  ????????  ?????????" Служба поддержки гонит что у меня проблема с кодом, но это ведь крон мне письма шлет с кодировкой неверной, вобщем подскажите где в команде неверно написано. спасибо

Спустя 40 минут, 27 секунд (25.01.2012 - 12:42) flinth написал(а):
нет мыслей ни у кого?(

Спустя 2 минуты, 40 секунд (25.01.2012 - 12:44) inpost написал(а):
Попробуй в файле перекодировать iconv,
И фукцию отправки писем тоже надо показать, чтобы было отчетливо видно, что ты прописываешь верные кодировки!
Крон лишь запускает файл, а кодировки уже прописываются в файле!

Спустя 6 часов, 10 минут, 50 секунд (25.01.2012 - 18:55) flinth написал(а):
дак суть не в кодировке, когда я отсылаю у меня все замечательно. (но отсылаю я без гет запроса только для теста, пробовал я так т.е.
/usr/bin/php -q http:/domain.com/filename.php
все хорошо у меня работает файл.) А мне надо чтоб гетом отсылалось пробовал так
/usr/bin/php -q /usr/bin/wget "http:/domain.com/filename.php?get=info"
на это мне и высылается письмо от cron'a мол ошибка и так далее но в письме с приходят каракули из вопросительных знаков, а ошибка это я думаю потому что когда тестил без get то тоже трудности были, приходило похожее письмо но там описано было в чем проблема. Вот как то так.

Спустя 3 часа, 27 минут, 28 секунд (25.01.2012 - 22:23) killer8080 написал(а):
Цитата (flinth @ 25.01.2012 - 11:01)
/usr/bin/php -q /usr/bin/wget "http:/domain.com/filename.php?get=info"

Это что за бред? user posted image
Я вижу ты не понял суть совета Leningrad00
Цитата (flinth @ 24.01.2012 - 06:55)
Чтобы его не мог включить каждый встречный-поперечный добавил "защиту" в виде гет запроса с хешем, если есть то отправляет.

Параметр в запросе только для этого? В этом нет необходимости, в скрипте можно сделать проверку режима запуска, и в случае запуска через веб останавливать работу. Например в случае с mod_php можно так
PHP_SAPI != 'apache2handler' or die('web access restricted');

если на сервере FPM, то можно распознать консольный запуск по отсутствию $_SERVER['REQUEST_URI']
isset($_SERVER['REQUEST_URI']) or die('web access restricted');


Если же действительно нужно передавать параметры командной строкой, то об этом я уже выше писал.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.