Здравствуйте, стоит апач+пхп+мускул на winXP и есть необходимость безбраузерно загружать пхп скрипты, получается делать так из командной строки: Код (Text): cmd -> php.exe -q C:\***\testpage.php но не устраивает 2 вещи: 1) Нельзя(или я не знаю как) передавать GET/POST параметры; (ВАЖНО!) 2) Относительные пути в скриптах будут ссылаться на не на корневую папку скрипта, а на Windows/system32. (относительно важно) Подскажите пожалуйста как миновать эти недостатки или другой подходящий для меня способ решения поставленной задачи?
Можно воспользоваться компонентом от symfony: http://symfony.com/doc/current/components/console/introduction.html
Спасибо! Но все же хочется найти какое-нибудь решение не требующее каких-то доп.софтин. Чем меньше звеньев тем крепче цепь... Иначе когда что-то падает не знаешь куда кинуться и что ковырять... Неужели все используют браузеры для выполнения регулярных скриптов?! Еще один минус нашел у вышеописанного способа - это игнор серверных настроек в .htaccess, что для меня тоже критично... Иными словами нужен какой-нибудь штатный способ выполнить(прогрузить) http://localhost/***/testpage.php?parm1=1&parm2=2 без браузеров...
Хм, в никсах для этого существует cron: http://ru.wikipedia.org/wiki/Cron на обычных хостингах он тоже должен быть и настраивается где-нибудь в панельке. В Windows есть планировщик заданий, который выполняет команды в определенное время, думаю его в принципе можно настроить на запуск ссылки.
По поводу пункта 1: Есть несколько решений: 1 - прямой: Код (PHP): // php myscript.php hello echo $argv[1]; // выведет hello // php -e myscript.php -f=world $opts = getopt('f:'); echo $opts['f']; // выведет world 2 - чуть изощреннее и наверное не будет работать по Windows: Объявить переменную в окружении перед вызовом php Код (PHP): // export QUERY_STRING="var=value&arg=value"; php myscript.php parse_str($_SERVER['QUERY_STRING'], $_GET); print_r($_GET); /* вывод: Array( [var] => value [arg] => value ) */ 3. использовать php-cgi php-cgi -f index.php left=1058 class=A language=English Что тебе в _GET положит: Код (PHP): Array ( [left] => 1058 [class] => A [language] => English )
Ke1eth - огромное спасибо! Теперь 1й вопрос отпал, 2й можно решить добавлением Код (Text): ($_SERVER['DOCUMENT_ROOT']?$_SERVER['DOCUMENT_ROOT']:'').dirname($_SERVER['PHP_SELF'])."/". вначале каждого локального пути. Но вот теперь у меня с третьим вопросом проблемка - перенёс параметры из .htaccess в httpd.conf и php.ini. Браузерно все работает но из командной он просто игнорирует php.ini. Даже если делать так: Код (Text): cmd -> php.exe -с C:\***\php.ini -q C:\***\testpage.php Например в php.ini - max_execution_time = 5 - команда в cmd может маслать допосинения, однако если я укажу: Код (Text): cmd -> php.exe -d max_execution_time=5 -q C:\***\testpage.php Скрипт ровно через 5сек возвращает ошибку... Это конечно же хорошо, но я же не могу таким образом перечислять все параметры php.ini...
php.ini подгружаемый при выполнении из командной строки, это совсем не тот php.ini, который читается при работе с веб-сервером. смотри, у себя, их несколько.