2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 CGI на Apache
Сообщение16.09.2010, 13:49 


04/06/10
13
Возникла непонятная проблема. На машине установлен и сконфигурирован сервер Apache. Написано 2 однотипных простейших CGI приложения (выводящее в окно браузера строку Hello world!) - одно в среде Delphi7, другое в Microsoft Visual Studio 2008 Express Edition (язык С++). Так вот, суть проблемы в том что приложение на Delphi работает корректно, а на C++ нет. В чем кроется проблема??? Я никак не могу понять. Помогите пожалуйста.

 Профиль  
                  
 
 Re: CGI на Apache
Сообщение16.09.2010, 17:03 
Аватара пользователя


01/04/10
910
endo в сообщении #353040 писал(а):
Возникла непонятная проблема. На машине установлен и сконфигурирован сервер Apache. Написано 2 однотипных простейших CGI приложения (выводящее в окно браузера строку Hello world!) - одно в среде Delphi7, другое в Microsoft Visual Studio 2008 Express Edition (язык С++). Так вот, суть проблемы в том что приложение на Delphi работает корректно, а на C++ нет. В чем кроется проблема??? Я никак не могу понять. Помогите пожалуйста.


Очень внимательно следите за форматом выводимого текста, для CGI приложения (в частном случае для вывода текста) формат обязательно должен быть следующим:

"Content-type: text/html\n\n"

И только после вывода этой строки первой, Вы можете вывести "Hello, World."

Так же внимательно следите за правами доступа к файлу, так как неправильные права доступа могут быть причиной ошибки запуска приложения силами Apache httpd. Чтобы точно сказать причину, нужен Ваш исходный код на C++. И ошибки которые вываливаются в error_log.

P.S. http://httpd.apache.org/docs/2.0/howto/cgi.html

 Профиль  
                  
 
 Re: CGI на Apache
Сообщение17.09.2010, 05:14 


04/06/10
13
Опишу производимые действия подробнее.
1. Для среды Delphi7. Открываю среду ---> меню File ---> new ---> Other. Выбираю в появившемся окне Concole Application. В открывшемся окне пишу следующий текст программы:

Program ExampleCGI;
{$apptype console}

uses
SysUtils;

begin
Writeln('Content-type: text/html');
Writeln;
Writeln('Hello, world!');
end.

Далее нажимаю Ctrl+F9 (компилировать) и в каталоге с программой появляется файл Project1.exe. Этот файл я копирую в папку c:\apache2_2\cgi-bin\ на web-сервере с IP-адресом 192.168.2.129 (web-сервер развернут на машине в локальной сети) и переименовываю в 1.exe.
Запускаю Internet Explorer, набираю в адресной строке http://192.168.2.129/cgi-bin/1.exe - в окне браузера появляется надпись Hello, world!. То есть все работает.
2. Теперь для Visual Studio 2008. Открываю среду, в окне Последние проекты выбираю "Создать Проект" ---> Win32 ---> консольное приложение ---> пустой проект. К файлам исходного кода добавляю "Файл C++ (.cpp) и в окне пишу следующий текст программы:

#include <stdio.h>

void main()
{
printf("Content-type: text/html\n\n");
printf("Hello world!");
}

Далее все сохраняю, компилирую и в каталоге с программой в папке \Debug появляется файл cgi.exe. Этот файл я копирую в папку c:\apache2_2\cgi-bin\ на web-сервере с IP-адресом 192.168.2.129 (web-сервер развернут на машине в локальной сети) и переименовываю в 1.exe.
Запускаю Internet Explorer, набираю в адресной строке http://192.168.2.129/cgi-bin/1.exe - в окне браузера появляется надпись ошибки №500:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin@example.exa and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

В логах сервера написано следующее:

[Fri Sep 17 06:03:40 2010] [error] [client 192.168.2.1] (OS 14001)Приложение не было запущено, поскольку оно некорректно настроено. Повторная установка приложения может решить данную проблему. : couldn't create child process: 734001: 1.exe

И напоследок некоторые директивы файла конфигурации Apache:
ScriptAlias /cgi-bin/ "C:/apache2_2/cgi-bin/"
<Directory "C:/apache2_2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

Пока все. Если нужны дополнительные данные спрашивайте.

 Профиль  
                  
 
 Re: CGI на Apache
Сообщение17.09.2010, 10:50 
Аватара пользователя


01/04/10
910
endo

Попробуйте запустить Вашу программку на C из командной строки и посмотреть на результат.

 Профиль  
                  
 
 Re: CGI на Apache
Сообщение20.09.2010, 11:58 


04/06/10
13
Спасибо. Командная строка как всегда рулит. На той машине, на которой разрабатывалось приложение все работало и выводило как надо, на сервере же нет.
Оказалось проблема была в настройках компилятора Visual studio. Надо было в диспетчере конфигураций выбрать Release, а в свойствах проекта выставить компилятору статическую линковку - Mt. Если на машине установлен framework соответствующей версии (для Visual Studio 2008 - 3.5) все работает и без этих манипуляций.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group