Apache-2.4
CGI 二進製文件不執行,而是被下載
我有一個 apache 2.4.46-3 伺服器,它從 /srv/http 提供服務。我有一個包含 2 個文件的文件夾 /srv/http/bin:
.htacces(模式 644):
AddHandler cgi-script .exe Options +ExecCGI
main.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 時,它會提供下載 exe 而不是顯示 html。我忘記啟用某些東西了嗎?
編輯:
cgi-bin 目錄有問題, 這並沒有解決我的問題!
exe
替換with的所有實例cgi
也沒有解決我的問題!添加
<Directory "/srv/http/bin"> Options +ExecCGI AddHandler cgi-script cgi pl exe AllowOverride All Require all granted </Directory>
到 httpd.conf 也沒有解決問題!沒有
/var/log/httpd/error_log
與 cgis 或 exes 或 /srv/http/bin 文件夾相關的錯誤,那麼這裡可能發生了什麼?
原來我沒有在 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>