Суть проблемы: Сделал в кроне таск: 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).
* * * * * /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 запрос к серверу, чтобы заставить его выполняться в веб режиме. В консоли то же можно передавать параметры запуска
Параметры запуска скрипта читаются из $_SERVER['argv']
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" |
Это что за бред?
Я вижу ты не понял суть совета 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');
Если же действительно нужно передавать параметры командной строкой, то об этом я уже выше писал.