편집하다:

편집하다:

/srv/http에서 서비스를 제공하는 Apache 2.4.46-3 서버가 있습니다. 2개의 파일이 있는 /srv/http/bin 폴더가 있습니다.

.htaccess(모드 644):

AddHandler cgi-script .exe
Options +ExecCGI

메인.exe(모드 755): main.cpp에서 컴파일:

#include <iostream>
using namespace std;

int main () {
   cout << "Content-type:text/html\r\n\r\n";
   cout << "<html>\n";
   cout << "<head>\n";
   cout << "<title>Hello World - First CGI Program</title>\n";
   cout << "</head>\n";
   cout << "<body>\n";
   cout << "<h2>Hello World! This is my first CGI program</h2>\n";
   cout << "</body>\n";
   cout << "</html>\n";
   
   return 0;
}

하지만 localhost/bin/main.exe 페이지를 방문하면 html을 표시하는 대신 exe를 다운로드하라는 메시지가 표시됩니다. 활성화하는 것을 잊었나요?

편집하다:

cgi-bin 디렉토리 문제 이것은 내 문제를 해결하지 못했습니다!

모든 인스턴스를 exe다음 으로 바꿔도 cgi문제가 해결되지 않았습니다!

첨가

<Directory "/srv/http/bin">
    Options +ExecCGI
    AddHandler cgi-script cgi pl exe
    AllowOverride All
    Require all granted
</Directory>

httpd.conf에서도 문제가 해결되지 않았습니다! cgis나 exes 또는 /srv/http/bin 폴더와 관련된 오류가 없는데 /var/log/httpd/error_log여기서 무슨 일이 일어날 수 있습니까?

답변1

알고 보니 httpd.conf에 cgi 모듈이 로드되어 있지 않았습니다.

관련 구성은 다음과 같습니다(구성에서 "cgi_module" 검색).

<IfModule !mpm_prefork_module>
        LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module>
        LoadModule cgi_module modules/mod_cgi.so
</IfModule>

관련 정보