我有一个非常基本的Python脚本作为CGI运行,我只能使用print语句运行它,它们以HTML形式执行和显示。当我尝试执行任何文件系统调用(例如使用日志记录,制作文件或使用子进程)时,出现错误500。
#!/usr/bin/python
import cgitb; cgitb.enable()
import cgi
import sys
from subprocess import call
call('ls') #Error here, if I remove I get no error 500 and see "Hello"
form = cgi.FieldStorage()
print "Content-Type: text/html"
print
print "<html><body>Hello"
print "</body></html>"
CGI脚本具有执行权限:
chmod a+x example.cgi
在我的Apache配置中,我有虚拟主机来执行CGI设置:
<Directory "/path/to/cgi/cgi-bin/">
AddHandler cgi-script cgi pl
Options +FollowSymLinks +ExecCGI
AllowOverride None
</Directory>
并为Apache设置CGI模块:
sudo a2enmod cgi
如果我直接在服务器上运行cgi脚本,则所有文件操作都可以正常工作,如果我尝试从浏览器访问它,即example.com/test.cgi,它将显示500错误。我还运行了dos2unix
以确保其格式正确。
答案 0 :(得分:0)
尝试使用os.system('ls')
代替通话,或者在启用 cgitb 之前使用它。