![运行 Python 脚本,使用 cgi 和 apache2 版本 2.4 将文件保存到服务器](https://linux22.com/image/680978/%E8%BF%90%E8%A1%8C%20Python%20%E8%84%9A%E6%9C%AC%EF%BC%8C%E4%BD%BF%E7%94%A8%20cgi%20%E5%92%8C%20apache2%20%E7%89%88%E6%9C%AC%202.4%20%E5%B0%86%E6%96%87%E4%BB%B6%E4%BF%9D%E5%AD%98%E5%88%B0%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我有一个 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 文件。