Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > CGI внутри PHP


Автор: kilogram 19.3.2012, 00:18
Изучаю пхп, там пишут что так не используют, но это важно знать как подключается cgi в пхп.

Вот написал код.
Код

#include <iostream>
#include <stdlib.h>
using namespace std;

void main(){

char *RemoteAddr = getenv("REMOTE_ADDR");
char *QueryString = getenv("QUARY_STRING");
cout<<"Content-type: text/html"<<endl<<endl;
cout<<"<html><body>";
cout<<"<h>Здравствуйте! Мы знаем о Вас все!</h1>";
printf("Ваш IP-адрес: %s<br>",RemoteAddr);
printf("Вот параметры, которые вы указали: %s", QueryString);
cout<<"</body></html>";
cin.get();
}


Скомпилировал программу, получил файл 1.exe, кинул этот файл возле файла index.php
Далее там пишут вот такое, что пишут, на фото вложил.
В файле index.php ничего не писал, там просто
Код
<?php echo 'Привет мир!'; ?>


Не могу понять, что в браузере ввести чтоб вызвать методом GET эту программу написанную на С++.
Когда ввожу так: http://test.ru/1.exe?a=1&b=2
происходит просто скачка файла 1.exe на компьютер, но не запуск cgi-программы(я так понял это называется любая программа написанная на ином языке, которую мы хотим запустить в браузере,верно?).

Подскажите, как запустить программу 1.exe?

Автор: skyboy 19.3.2012, 00:47
дело в том, что CGI ­— механизм, используемый НТТР-сервером. То есть, тебе надо взять почитать мануал используемого тобой НТТР-сервера.
к примеру, есть туториалы для разных версий на сайте http://httpd.apache.org/docs/2.4/howto/cgi.html
из РНР можно просто вызывать программу и получать от неё данные при помощи http://php.net/system или http://php.net/manual/en/ref.exec.php, но тогда тебе придется в РНР скрипте самостоятельно транслировать GET/POST параметры в аргументы командной строки запускаемой программы

Автор: kilogram 19.3.2012, 01:32
Согласно http://httpd.apache.org/docs/2.4/howto/cgi.html

Эта строка у меня раскомментирована LoadModule cgi_module modules/mod_cgi.so

Вроде делаю по книжке и почему-то программа не запускается.
Что ввести нужно в браузере чтоб запустилась программа?

Автор: Fortop 19.3.2012, 08:36
Цитата(kilogram @  19.3.2012,  01:32 Найти цитируемый пост)
Что ввести нужно в браузере чтоб запустилась программа?

Настроить веб-сервер

Автор: perloid 19.3.2012, 09:55
1) Убедиться что настроен обработчик cgi в конфиге, что из такой-то папки можно запускать cgi скрипты и приложения.
2) Расширение файла exe на cgi поменять (на скриншот свой посмотри - там cgi расширение), можно конечно добавить в список расширение exe (но это кретинизм).
3) Не понял причем тут php и нафига нужен index.php

Автор: kilogram 20.3.2012, 19:33
Апач находится у меня на диске С:\www
Я зашел в C:\www\conf 
в файл httpd.conf 
Ввел там такое: 

   
Код

 AddHandler cgi-script .cgi .pl .bat .exe
    AddType cgi-script .exe



Затем зашел в C:\www\conf нашел файл просто
httpd(текстовой) нашел там

Код

<Directory "C:/www/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>


и ввел ниже этого:

Код

<Directory "C:/www/htdocs/test.ru/www">
#тут могут быть и другие настройки типа AllowOverride или Allow
Options ExecCGI
</Directory>


Ввожу такую ссылку: http://test.ru/1.exe?a=1&b=2
Опять скачивается файл 1.exe но не запускается

Добавлено @ 19:34
Переименовал файл 1.exe на 1.cgi и запустил http://test.ru/cgi-bin/1.cgi?a=1&b=2
Выдает ошибку:

Код

Not Found

The requested URL /cgi-bin/1.cgi was not found on this server.


user posted image

Автор: kilogram 20.3.2012, 23:34
Все , запустил программу на С++ в пхп, оказывается нужно было переименовать в расширение cgi расширение exeи кинуть в папку cgi апача программу, а не в cgi возле папки сайта или в папкe www-сайта.
Скажите, а для каких возможностях используются cgi, какие проги пишутся примерно чтоб использовать cgi для пхп?

Автор: skyboy 21.3.2012, 01:40
например, php.exe
CGI, как я уже говорил, механизм НТТР сервера. через этот механизм может работать много программ, в том числе — сам php.exe
или что-то вместо него. и не обязательно это будет исполняемый файл. может быть — скрипт.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)