Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果文件有CRLF行结尾,为什么在类unix系统上通过CGI/WSGI运行python脚本会失败?_Python_Linux_Cgi_Webserver_Wsgi - Fatal编程技术网

如果文件有CRLF行结尾,为什么在类unix系统上通过CGI/WSGI运行python脚本会失败?

如果文件有CRLF行结尾,为什么在类unix系统上通过CGI/WSGI运行python脚本会失败?,python,linux,cgi,webserver,wsgi,Python,Linux,Cgi,Webserver,Wsgi,在过去,我曾多次尝试在CGI或WSGI下运行Python脚本,结果在我的Web服务器日志中出现以下不明确的错误: [error] [client <client>] (2)No such file or directory: exec of '/path/to/web/root/test.py' failed 过去,我通过确保文件使用unix行结尾来解决此问题,但出于好奇,我有以下问题: 据我所知,上述错误意味着无法找到python可执行文件;我说的对吗? 如果找不到python可

在过去,我曾多次尝试在CGI或WSGI下运行Python脚本,结果在我的Web服务器日志中出现以下不明确的错误:

[error] [client <client>] (2)No such file or directory: exec of '/path/to/web/root/test.py' failed
过去,我通过确保文件使用unix行结尾来解决此问题,但出于好奇,我有以下问题:

  • 据我所知,上述错误意味着无法找到python可执行文件;我说的对吗?
  • 如果找不到python可执行文件,为什么?CRLF结尾是否打破了shebang线?
  • 除了转换格式之外,还有其他解决方法吗?是否可以通过配置CGI/WSGI来自动处理此问题?

  • 我已经在Ubuntu11.04上用Apache2.2验证了这个特定示例,在CGI下运行Python2.6

    Python将能够处理CRLF行尾,但Linux/Unix只希望将LF作为行尾,因此一个令人难以置信的丑陋解决方案可能是(将^M作为文件名的一部分):

    请注意,您必须从命令行转义^M,因此在bash中它将是^V^M

    如果找不到python可执行文件,为什么?CRLF结尾是否打破了shebang线

    是的,就是这样

    除了转换格式,还有其他解决方法吗?有没有可能以这种方式配置CGI/WSGI来自动处理这个问题

    不会让你想吐的东西?我不这么认为

    #!/usr/bin/python
    print "Content-Type: text/html\n\n"
    
    print "Hello, World!"
    
    $ sudo ln -s /usr/bin/python /usr/bin/python^M