过去,我曾尝试在CGI或WSGI下运行Python脚本,只是为了在我的网络服务器日志中出现以下含糊不清的错误:
[error] [client <client>] (2)No such file or directory: exec of '/path/to/web/root/test.py' failed
即使使用非常简单的脚本,也会发生这种情况,即:
#!/usr/bin/python
print "Content-Type: text/html\n\n"
print "Hello, World!"
过去,我设法通过确保文件使用unix行结尾来解决问题,但出于好奇,我有以下问题:
我已经在Ubuntu 11.04上使用Apache 2.2验证了这个特定的例子,在CGI下运行Python 2.6。
答案 0 :(得分:1)
是的,就是这样。如果找不到python可执行文件,为什么? CRLF结局是否打破了shebang线?
除了转换格式之外,还有其他解决方法吗?是否可以以这种方式自动配置CGI / WSGI?
什么东西不会让你想要呕吐?我不这么认为。
答案 1 :(得分:-2)
Python将能够处理CRLF行结尾,但Linux / Unix期望只有LF作为行尾,所以一个令人难以置信的丑陋的解决方法可能是(将^ M作为文件名的一部分):
$ sudo ln -s /usr/bin/python /usr/bin/python^M
请注意,您必须从命令行中转义^ M,因此在bash中它将是^ V ^ M。