为什么我的Python脚本下载而不是运行?

1 投票
1 回答
851 浏览
提问于 2025-04-16 22:15

我正在尝试在我的共享网络主机上部署我的Django项目,使用的是.htaccess重写和一个运行FastCGI的Python脚本。我选择这种方法是因为我无法更改Apache的配置。当我访问网站时,应该运行FastCGI脚本,但却下载了脚本文件或显示了脚本的内容。我已经通过chmod +x mysite.fcgi命令让脚本可以执行。我把脚本放在了cgi-bin文件夹里,但还是不行。这个脚本可以在命令行中运行。

.htaccess

AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ cgi-bin/mysite.fcgi/$1 [QSA,L]

mysite.fcgi

#!/usr/bin/python
import sys, os

# Add a custom Python path.
sys.path.insert(0, "/home/jmjordan/.local/lib/python")
sys.path.insert(0, "/home/jmjordan/.local/lib/python/flup")


# Switch to the directory of your project. (Optional.)
# os.chdir("/home/user/myproject")

# Set the DJANGO_SETTINGS_MODULE environment variable.
os.environ['DJANGO_SETTINGS_MODULE'] = "jmjordan.settings"

from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")

1 个回答

1

我觉得你需要在你的Apache配置中做一些设置。

<Files mysite.fcgi>
    SetHandler fastcgi-script
</Files>

AddHandler这个指令只是把一个处理程序添加到Apache可以使用的处理程序列表里;而你需要用SetHandler来真正使用它。

这可能是为了安全考虑,防止有人上传一个后缀为.fcgi的文件,然后在你的服务器上运行任意代码。

撰写回答