运行 Python 脚本,使用 cgi 和 apache2 版本 2.4 将文件保存到服务器

运行 Python 脚本,使用 cgi 和 apache2 版本 2.4 将文件保存到服务器

我有一个 python 脚本(python.py),位于 /var/www/html/Python 文件夹中。

该脚本将一些图像保存到另一个目录(/var/www/html/Data)

我对 python.py 脚本拥有 -x 文件权限,对保存输出的所有文件拥有 -rw 权限。

我正在运行 apache2 版本 2.4

我的 apache2.conf 文件如下所示:

Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

HostnameLookups Off
LogLevel warn

IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

Include ports.conf

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

</Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
AccessFileName .htaccess

<FilesMatch "^\.ht">
    Require all denied
</FileMatch>

IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf

由于我运行的是 2.4 版本,所以我的 cgi 配置位于:/ect/apache2/conf-available/serve-cgi-bin.conf

它看起来像这样:

<IfModule mod_alias.c>
    <IfModule mod_cgi.c>
        Define ENABLE_USR_LIB_CGI_BIN
    </IfModule>

    ScriptAlias /cgi-bin/ /var/www/html/Python
    <IfDefine ENABLE_USR_LIB_CGI_BIN>
        Define ENABLE_USR_LIB_CGI_BIN
    </IfDefine>

    <Directory "var/www/html/Python">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
        AddHandler cgi-script .py
        AddHandler default-handler .html.htm
    </Directory>
</IfModule>

我已经通过运行命令启用了 cgi 模块

sudo a2enmod cgi

并使用重新启动服务器

服务 apache2 重启

然而尽管如此,我的 Python 脚本仍然没有执行,而是显示为文本文件。

有人能帮帮我吗?我不知道我做错了什么。

答案1

一个愚蠢的问题:您/etc/apache2/conf-available/serve-cgi-bin.conf在目录中有一个硬链接吗/etc/apache2/conf-enabled

编辑:为了创建链接,您需要在命令提示符下更改目录/etc/apache2/conf-enabled,然后键入

ln /etc/apache2/conf-available/serve-cgi-bin.conf serve-cgi-bin.conf

如果您没有在该目录中创建文件的权限,则可能需要使用 sudo 命令。当然,创建该链接后,您必须重新启动 apache。

答案2

如果是权限问题,可能是权限太宽松。我知道 Sendmail 会拒绝接受某些可写的配置文件;如果发现 Apache 也是如此,我并不感到惊讶。检查 Apache 的用户是否无权写入 .conf 文件。

相关内容