У меня установлен локальный сервер Apache/ я хочу проверить работоспособность CGI сценариев через адресную строку броузера открыв скрипт таким образом localhost/script.cgi когда открываю скрипт должно отобразиться на странице следующий текст(как написано в учебнике) Код (Text): <html><body> Привет, name! Я знаю, Вы родились born! </body></html> что и происходит. Потом я пытаюсь проделать такое(так же как расписано в книге. только там не написано, этот html код должен находиться в этом скрипте или в каком то другом файле) localhost/script.cgi?name=Murad&born=1987 при этом на экране броузера должно отобразиться следующее Код (Text): <html><body> Привет, Murad! Я знаю, Вы родились 1987! </body></html> Но сообщение не меняется, код высвечивается так же как был. Кто подскажет, что не так делаю? может apache надо как - то настроить чтобы он обрабатывал CGI скрипты *?
Итак, пусть у нас на сервере в корневом каталоге размещен файл сценария script.cgi (наверное, вы уже заметили, что расширение CGI принято присваивать CGI- сценариям, хотя, как уже упоминалось, никто не мешает вам использовать любое другое слово). Этот сценарий распознает два параметра: name и born. Где эти параметры задаются, мы пока не решили. При переходе по адресу http://example.com/script.cgi сценарий должен отработать и вывести следующую HTML-страницу: Код (Text): <html><body> Привет, name! Я знаю, Вы родились born! </body></html> Разумеется, при генерации страницы параметры name и born нужно заменить на соответствующие значения, переданные в них. Добавлено спустя 3 минуты 47 секунд: этот момент мне и не ясен, что является содержимым этого файла.
мне самому ничего не понятно, ищу человека, который понимает. А если тебе не понятно, то что я скопировал из учебника, значит ты сам так же как и я ничего не знаешь в CGI
YSandro, ты хоть читаешь что там я пишу? я его сам создал. он изначально пустой. Я в адресной строке броузера набираю localhost/script.cgi?name=Murad&born=1987 он должен записать вместо name = Mirad и вместо born = 1987 но как и в какой html документ тоже не совсем ясно. Мне не известно только то что написано в условии задачи. Перечитал всю главу посвященную HTTP и CGI но не могу вникнуть. Может мне стоит бросить книгу и спать лечь, но очень хочется понять. с php файлом все получается.
Я просто поверить не мог, что ты, ничего не делая, ожидаешь от файла каких-то действий. Ты даже задачу не можешь сформулировать. Итак, если тебе нужен результат, о котором пишешь, то напиши в файле: Код (PHP): #!c:/server/php/bin/php <?php //выше - путь к программе php.exe, нужно найти прогу и вписать правильный путь $name=(isset($_GET['name']))?$_GET['name']:'_no_name_'; $born=(isset($_GET['born']))?(int)$_GET['born']:-1; echo "<html><body> Привет, $name! Я знаю, Вы родились $born! </body></html>"; ?>
я сформулировал вопрос так, как есть в книге, практически слово в слово. Короче, я окончательно запутался. А где сам CGI сценарий ? Или это и есть CGI сценарий ?
В CGI-сценарий можно запихнуть все что угодно - Pascal, Phyton, C или тот-же PHP. CGI - это интерфейс («общий интерфейс шлюза»), а не язык программирования.
Вот такой cgi сценарий у меня работает. Мой пример выше не будет работать. Код (PHP): #!c:/Server/PHP/php-5.3.2-Win32-VC9-x64/php.exe <?php echo "Content-type: text/html; charset=utf-8\n\n"; $qPairArr=explode('&',$_SERVER['QUERY_STRING']); $_GET=array(); foreach($qPairArr as $pair){ $tArr=explode('=',$pair, 2); @$_GET[$tArr[0]]=htmlspecialchars(urldecode($tArr[1])); } $name=(isset($_GET['name']))?$_GET['name']:'_no_name_'; $born=(isset($_GET['born']))?(int)$_GET['born']:-1; echo "<html><body> Привет, $name! Я знаю, Вы родились $born! </body></html>"; ?> Путь к php.exe нужно прописать свой. В конфиге апача в разделе <IfModule mime_module> должно быть написано Код (Text): AddHandler cgi-script .cgi .php Ещё, я сохранил файл в кодировке utf-8 и в заголовке, соответственно, написал charset=utf-8. Добавлено спустя 7 минут 6 секунд: Вот такой cgi сценарий у меня тоже работает, файл test.bat: Код (Text): @echo off echo Content-type: text/html echo. echo. echo привет В конфиге апача в разделе <IfModule mime_module> должно быть написано Код (Text): AddHandler cgi-script .cgi .php .bat
твой предыдущий пример работает, указал свой путь к файлу php.exe расширение файла получается нужно указывать .php, если пишется на php , и .с если пишется на С? Только комментарий и путь к файлу php.exe высвечиваются в броузере. Добавлено спустя 14 минут 42 секунды: Меня запутал тот момент, что расширение файла указан в книге script.cgi а при его вызове высвечивается весь код файла А сами php файлы я не считал cgi - сценариями. Вот в этом оказалась моя ошибка. уже за книгой больше чем более 24 часов, и все окончательно запутал
если расширение PHP у меня все работает, а если расширение отличное от php не работает, просто высвечивается весь код файла. В книге написано что расширение не имеет значения, CGI сценарий должен делать свое дело в любом случае Код (Text): AddHandler cgi-script .cgi .php .bat прописал тоже Может еще что надо расскомментировать в файле конфига apache?