Apache-2.2
Apache:將 DocumentRoot 設置為 cgi 目錄會導致下載文件而不是執行文件
我有一個 c 編譯的 CGI 應用程序,需要從我的 Apache 伺服器的 DocumentRoot 執行。CGI 文件稱為 index.cgi,位於 /usr/lib/cgi-bin/index.cgi。
我有以下目錄定義
<Directory "/usr/lib/cgi-bin/"> Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch AllowOverride None Order allow,deny Allow from all DirectoryIndex index.cgi </Directory>
我有以下 VirtualHost 設置:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /usr/lib/cgi-bin # ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined </VirtualHost>
如果我轉到 127.0.0.1 或 127.0.0.1/index.cgi,系統會提示我下載 index.cgi 文件,但是如果我在 vhost 配置塊中啟用 ScriptAlias 並轉到 127.0.0.1/cgi-bin/index。 cgi 我看到了我的 CGI 應用程序的輸出。
我最初用 mod_rewrite 解決了這個問題,但是在我的測試系統上工作的目標(嵌入式)沒有可用的模組,所以我正在尋找另一條路線(再次)。
如果您不使用
ScriptAlias
. 在目錄部分,添加類似AddHandler cgi-script .cgi
這就是文件所說的:
任何具有處理程序 cgi-script 的文件都將被視為 CGI 腳本,並由伺服器執行,並將其輸出返回給客戶端。文件通過具有包含由 AddHandler 指令定義的副檔名的名稱或位於 ScriptAlias 目錄中來獲取此處理程序。