我在lighttpd中有两个CGI测试脚本。
当我打开 Bash http://host/cgi-bin/test.sh
URL 时,我从脚本获得了有效的响应。
但是当我打开 Python 时,http://host/cgi-bin/test.py
文件是在浏览器中下载的,而不是由 CGI 模块运行。
如何让 Bash 和 Python 在 CGI 中工作?
我在 lighttpd.conf 中的 CGI 配置:
server.modules = (
"mod_access",
"mod_cgi",
"mod_accesslog" )
cgi.assign = ( ".sh" => "/bin/bash",
".py" => "/usr/bin/python" )
$HTTP["url"] =~ "^/cgi-bin/" {
cgi.assign = ( ".sh" => "/bin/bash",
".py" => "/usr/bin/python" )
}
两个文件具有相同的权限,并按预期从命令行执行。
$ ls -l /www/pages/cgi-bin/
total 8
-rwxr-xr-x 1 root root 96 May 8 12:27 test.py
-rwxr-xr-x 1 root root 19 May 8 12:19 test.sh
$ cat test.sh
#!/bin/bash
echo Hi from Bash
$ cat test.py
#!/usr/bin/python
print "Hi from Python"
$
答案1
确保在更改配置后重新启动了 lighttpd 服务器。
killall -USR1 lighttpd
另外,请确保清除浏览器的缓存,或者在隐私浏览或隐身窗口中进行测试。或者在另一台机器上进行测试。或者使用命令行客户端进行curl
测试。