Почему CGI не работает в apache

У меня есть url вот так:

http: // ipadress / project / cgi / sessionlogin.cgi? login = usernmae & password = somepass

но когда я открываю этот URL-адрес, я вижу действие загрузки fileа cgi, а не результат. У меня есть .htaccess в папке с cgi-скриптами (/ var / www / html / project / cgi) с этой информацией:

AllowOverride None Options +Indexes +ExecCGI +MultiViews +SymLinksIfOwnerMatch #Order allow,deny Require all granted Allow from all 

У меня также есть эта часть в config virtualhost:

 ScriptAlias /cgi-bin "/var/www/html/project/cgi/" <Directory "/var/www/html/project/cgi"> AllowOverride None Options +Indexes +ExecCGI +MultiViews +SymLinksIfOwnerMatch #Order allow,deny Require all granted Allow from all </Directory> ScriptAlias ​​/ cgi-bin "/ var / www / html / project / cgi /" ScriptAlias /cgi-bin "/var/www/html/project/cgi/" <Directory "/var/www/html/project/cgi"> AllowOverride None Options +Indexes +ExecCGI +MultiViews +SymLinksIfOwnerMatch #Order allow,deny Require all granted Allow from all </Directory> <Каталог "/ var / www / html / project / cgi"> ScriptAlias /cgi-bin "/var/www/html/project/cgi/" <Directory "/var/www/html/project/cgi"> AllowOverride None Options +Indexes +ExecCGI +MultiViews +SymLinksIfOwnerMatch #Order allow,deny Require all granted Allow from all </Directory> Параметры + Индексы + ExecCGI + MultiViews + SymLinksIfOwnerMatch ScriptAlias /cgi-bin "/var/www/html/project/cgi/" <Directory "/var/www/html/project/cgi"> AllowOverride None Options +Indexes +ExecCGI +MultiViews +SymLinksIfOwnerMatch #Order allow,deny Require all granted Allow from all </Directory> 

Но все это не работает. Модуль cgi вkeyен. Это C ++ fileы cgi. Что я делаю неправильно?

Во-первых, installation AllowOverride None означает, что любой file .htaccess будет проигнорирован (что хорошо, поскольку у вас уже есть доступ к основной конфигурации Apache VirtualHost), чтобы вы могли удалить file .htaccess .

Во-вторых, фактический file CGI должен иметь правильные разрешения для выполнения Apache ( chmod 755 ), и если вы используете SELinux, вам может понадобиться активировать логическое httpd_enable_cgi SELinux httpd_enable_cgi и убедиться, что file CGI помечен как httpd_sys_script_exec_t .

Хотя моя система Apache24 на Windows 8.1, я думаю, что эта проблема более общая, независимо от систем. У меня была рабочая configuration с Apache22 на Windows 7, и я не делал никаких замечательных изменений при обновлении до apache24 на Windows 8.1. Когда я googled для этой проблемы, я понимаю, что less общего решения. Очеviewно, Apache24 не viewел my_file_extension как исполняемый file.

Более того, хотя я очистил кеш firefox из directoryа «c: \ users \ appdata \ local \ temp» и удалил file с диска; firefox постоянно выдавал тот же file из моей fileовой системы (а именно file: \\ c: \ users \ appdata \ local \ temp \ the-file). И эта ситуация существовала для каждого из моих serverов (один server на моей основной машине и serverе на другой тестовой машине).

Таким образом, решение, которое я нашел (я думаю, более общий, по крайней мере, работает для меня) использует директиву «Модульные mod_actions» («Action» Directive).

Подводя итог: моя старая configuration подобна этой

 #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted Addhandler cgi-script .ksp </Directory> #for alias_module #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted Addhandler cgi-script .ksp </Directory> ScriptAlias ​​/ cgi-bin / "c: / Apache24 / cgi-bin /" #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted Addhandler cgi-script .ksp </Directory> # для directoryа cgi #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted Addhandler cgi-script .ksp </Directory> # my_file_extension - ksp #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted Addhandler cgi-script .ksp </Directory> <Directory "c: / Apache24 / cgi-bin"> #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted Addhandler cgi-script .ksp </Directory> Опции + ExecCGI #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted Addhandler cgi-script .ksp </Directory> Addhandler cgi-script .ksp #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted Addhandler cgi-script .ksp </Directory> 

и новая configuration подобна этой

 #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted </Directory> # then the new directive i added; # for any file in the server root directory that has an extension .ksp <Location /> AddHandler ksp .ksp Action ksp "/cgi-bin/CGI_KSP.exe" </Location> #for alias_module #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted </Directory> # then the new directive i added; # for any file in the server root directory that has an extension .ksp <Location /> AddHandler ksp .ksp Action ksp "/cgi-bin/CGI_KSP.exe" </Location> ScriptAlias ​​/ cgi-bin / "c: / Apache24 / cgi-bin /" #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted </Directory> # then the new directive i added; # for any file in the server root directory that has an extension .ksp <Location /> AddHandler ksp .ksp Action ksp "/cgi-bin/CGI_KSP.exe" </Location> # для directoryа cgi #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted </Directory> # then the new directive i added; # for any file in the server root directory that has an extension .ksp <Location /> AddHandler ksp .ksp Action ksp "/cgi-bin/CGI_KSP.exe" </Location> # my_file_extension - ksp #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted </Directory> # then the new directive i added; # for any file in the server root directory that has an extension .ksp <Location /> AddHandler ksp .ksp Action ksp "/cgi-bin/CGI_KSP.exe" </Location> <Directory "c: / Apache24 / cgi-bin"> #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted </Directory> # then the new directive i added; # for any file in the server root directory that has an extension .ksp <Location /> AddHandler ksp .ksp Action ksp "/cgi-bin/CGI_KSP.exe" </Location> Опции + ExecCGI #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted </Directory> # then the new directive i added; # for any file in the server root directory that has an extension .ksp <Location /> AddHandler ksp .ksp Action ksp "/cgi-bin/CGI_KSP.exe" </Location> #, то новая директива i добавлена; #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted </Directory> # then the new directive i added; # for any file in the server root directory that has an extension .ksp <Location /> AddHandler ksp .ksp Action ksp "/cgi-bin/CGI_KSP.exe" </Location> # для любого fileа в корневом directoryе serverа с расширением .ksp #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted </Directory> # then the new directive i added; # for any file in the server root directory that has an extension .ksp <Location /> AddHandler ksp .ksp Action ksp "/cgi-bin/CGI_KSP.exe" </Location> AddHandler ksp .ksp #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted </Directory> # then the new directive i added; # for any file in the server root directory that has an extension .ksp <Location /> AddHandler ksp .ksp Action ksp "/cgi-bin/CGI_KSP.exe" </Location> Действие ksp "/cgi-bin/CGI_KSP.exe" #for alias_module ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/" # for cgi directory # my_file_extension is ksp <Directory "c:/Apache24/cgi-bin"> AllowOverride None Options +ExecCGI Require all granted </Directory> # then the new directive i added; # for any file in the server root directory that has an extension .ksp <Location /> AddHandler ksp .ksp Action ksp "/cgi-bin/CGI_KSP.exe" </Location> 

В документации apache для директивы Action, в качестве примера

 Example: File extension # Files of a particular file extension AddHandler my-file-type .xyz Action my-file-type "/cgi-bin/program.cgi" In this example, requests for files with a file extension of .xyz are handled by the specified cgi script /cgi-bin/program.cgi. Пример: расширение fileа Example: File extension # Files of a particular file extension AddHandler my-file-type .xyz Action my-file-type "/cgi-bin/program.cgi" In this example, requests for files with a file extension of .xyz are handled by the specified cgi script /cgi-bin/program.cgi. # Файлы определенного расширения fileа Example: File extension # Files of a particular file extension AddHandler my-file-type .xyz Action my-file-type "/cgi-bin/program.cgi" In this example, requests for files with a file extension of .xyz are handled by the specified cgi script /cgi-bin/program.cgi. AddHandler my-file-type .xyz Example: File extension # Files of a particular file extension AddHandler my-file-type .xyz Action my-file-type "/cgi-bin/program.cgi" In this example, requests for files with a file extension of .xyz are handled by the specified cgi script /cgi-bin/program.cgi. Действие my-file-type "/cgi-bin/program.cgi" Example: File extension # Files of a particular file extension AddHandler my-file-type .xyz Action my-file-type "/cgi-bin/program.cgi" In this example, requests for files with a file extension of .xyz are handled by the specified cgi script /cgi-bin/program.cgi. 

Надеюсь это поможет…

  • Динамическая переменная SetEnv vhost Ubuntu Apache2
  • Блокировать server, отказывать или перенаправлять на основе User-Agent?
  • Защита паролем виртуального документа vhost
  • Как поделиться конфигурацией виртуального хоста Apache2 между двумя Linux-serverами?
  • Перенаправить субдомен на виртуальный хост Apache
  • Директива по умолчанию для vhost
  • Браузер предупреждает о недействительном certificateе, но перенаправляет его правильно
  • Конфигурация apache2 для blog.example.com не работает
  • Настройка виртуального хоста Apache всегда сбой после перезагрузки
  • Как настроить VirtualHost без перезапуска веб-serverа Apache?
  • Godaddy перенаправляет несколько доменов на static ip с помощью vhost
  • Давайте будем гением компьютера.