You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下Apache2运行CGI程序遇403错误及多类型脚本配置问询

问题解决:Apache运行CGI脚本(Perl/EXE/Shell)的配置修正

一、403错误的核心原因与修复

你的配置使用了Apache 2.2的旧权限指令,而当前版本是Apache 2.4,已采用全新授权语法;同时需确保CGI模块已启用。

修复步骤:

  1. 启用CGI模块:
    执行命令:
    sudo a2enmod cgi
    
  2. 替换权限配置:
    将<Directory "/usr/lib/cgi-bin">段内的:
    Order allow,deny
    Allow from all
    
    替换为Apache 2.4的标准授权指令:
    Require all granted
    

二、配置支持多种脚本后缀(.pl/.exe/.cgi/.sh)

在AddHandler指令中添加所有需要支持的文件后缀,修改后如下:

AddHandler cgi-script .pl .cgi .sh .exe

注意:Linux系统下的.exe文件需为可执行二进制文件(如兼容Wine的程序),确保系统能正常运行它。

三、脚本与权限验证

  1. Shebang检查:你的Perl脚本hw.pl中#!/usr/bin/perl是正确的,可通过which perl命令确认该路径存在。
  2. 脚本权限:所有待运行的脚本必须具备可执行权限(你的hw.pl为-rwxr-xr-x、fh_fe.exe为-rwxrwxrwx,已满足要求)。
  3. 目录权限:/usr/lib/cgi-bin的drwxr-xr-x权限正常,Apache进程用户(通常为www-data)可读取并进入该目录。

四、修改后的完整VirtualHost配置

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Require all granted
        AddHandler cgi-script .pl .cgi .sh .exe
    </Directory>
</VirtualHost>

五、重启Apache服务

修改配置后必须重启服务使设置生效:

sudo systemctl restart apache2

现在访问localhost/cgi-bin/hw.pl即可正常输出"Hello, World."。其他后缀的脚本只要满足可执行、Shebang正确(如.sh脚本需添加#!/bin/bash),即可正常运行。

内容的提问来源于stack exchange,提问作者Jonathan Leslie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:30:32