Как использовать C ++ CGI Script? - PullRequest
6 голосов
/ 28 января 2011

В настоящее время я учусь в классе веб-приложений в моем колледже, и мы изучаем сценарии cgi. Мне трудно научиться реализовывать мой CGI-скрипт. Когда я нажимаю на мою ссылку, появляется окно с просьбой загрузить файл helloworld.cgi вместо простого перенаправления.

HTML:

<html>
    <body>
        <a href="/user/local/apache2/cgi-bin/helloworld.cgi">click me</a>
    </body>
</html>

C ++:

#include <iostream>

using namespace std;

int main(){
    cout << "Content-type: text/html" << endl;
    cout << "<html>" << endl;
    cout << "   <body>" << endl;
    cout << "       Hello World!" << endl;
    cout << "   </body>" << endl;
    cout << "</html>" << endl;

    return 0;
    }

CGI-скрипт хранится в /user/local/apache2/cgi-bin/helloworld.cgi

Ответы [ 4 ]

13 голосов
/ 28 января 2011

Вам необходимо скомпилировать файл C ++ и вызвать результат helloworld.cgi. C ++ не является языком сценариев - вы не можете просто развернуть его на своем сервере.

В типичной системе * nix назовите файл C ++ helloworld.cpp

 gcc -o helloworld.cgi helloworld.cpp

Затем поместите этот файл в ваш cgi-bin

Редактировать: вам нужно два конца после последнего элемента заголовка

  cout << "Content-type: text/html" << endl << endl;
7 голосов
/ 28 января 2011

/user/local/apache2/cgi-bin/helloworld.cgi - это физический путь к файлу на вашем жестком диске.Чтобы запустить скрипт через Apache, вам нужно указать путь относительно корня документа вашего сервера, например.http://localhost/cgi-bin/helloworld.cgi.

2 голосов
/ 01 февраля 2018

У меня тоже была эта проблема, и это решение помогло мне:
Сначала запустите эти команды на терминале:

sudo a2enmod cgi
sudo service apache2 restart

Затем скопируйте helloworld.cgi в / usr / lib / cgi-bin /

sudo cp helloworld.cgi /usr/lib/cgi-bin/

И, наконец, измените ссылку href на:

  <a href="/cgi-bin/helloworld.cgi">click me</a>
1 голос
/ 28 января 2011

Вам просто нужно настроить Apache для правильного распознавания cgi-bin ...

Прочитайте это: http://httpd.apache.org/docs/1.3/howto/cgi.html

В конфигурации Apache ScriptAlias, вероятно, то, что вы хотите.

(я предполагаю, что вы скомпилировали двоичный файл в helloworld.cgi)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...