【问题标题】:How to use same python cgi file on windows and linux (apache)?如何在 windows 和 linux (apache) 上使用相同的 python cgi 文件?
【发布时间】:2013-12-29 03:03:46
【问题描述】:

在linux/apache服务器上使用python作为CGI,第一行(定义解释器的,shebang)应该是这样的:

#!/usr/bin/env python 

在 windows/apache 服务器上运行相同的 python CGI,第一行(定义解释器的)应该是这样的:(假设 python 安装到 c:/python27)

#!c:/python27/python.exe

是否有设置相同行的选项,以便在将文件从 linux 移动到 windows 时不需要更改?

【问题讨论】:

  • 你可以看看windows上perl shebang的答案:stackoverflow.com/questions/2036577/…
  • 请不要在您的问题标题中添加“已解决”。如果您找到了自己的解决方案,请将其作为答案发布,并通过单击左边距中的复选标记accept it
  • @Amal Murali:非常感谢。完成。
  • @GuyDafny:请仔细阅读我的评论。我说“请不要在您的问题标题中添加“已解决”......”。 :)
  • @Amal Murali:再次感谢,抱歉 - 英语不是我的母语,我试着读得太快了。

标签: python linux windows apache cgi


【解决方案1】:

此处描述的完整答案: http://my.opera.com/NoteMe/blog/running-python-as-cgi-in-apache-in-windows

在 Windows 下 - 对 apache 配置文件的下一个更改:

AddHandler cgi-script .py 

从下一行删除“哈希”(“#”):

#ScriptInterpreterSource Registry 

可以在此处找到有关此案例安全性的更多详细信息和一些其他数据: How do you use the Apache "ScriptInterpreterSource Registry-Strict" directive?

【讨论】:

    【解决方案2】:

    所以你有shebang线#!/usr/bin/env python 您在 Windows 中缺少的实际上是 env.exe 应用程序。

    1. 从 GnuWin 项目下载以下 ZIP 文件 https://sourceforge.net/projects/gnuwin32/files/coreutils/5.3.0/:

      • coreutils-5.3.0-bin.zip

      • coreutils-5.3.0-dep.zip

    2. 在同一驱动器上创建 \usr\bin 文件夹,其中 Apache HTTP for Windows 的起始位置,例如:c:\usr\bin

    3. 解压到创建的 \usr\bin 文件夹中:

      • env.exe 来自 coreutils-5.3.0-bin.zip;

      • libiconv2.dll、libintl3.dll 来自 coreutils-5.3.0-dep.zip

    4. 你应该有以下文件:

      C:\usr\bin>dir
       Volume in drive C is OSDisk
       Volume Serial Number is DEAD-BEEF
      
       Directory of C:\usr\bin
      
      01/23/2019  10:24 AM    <DIR>          .
      01/23/2019  10:24 AM    <DIR>          ..
      04/20/2005  01:41 PM            24,064 env.exe
      03/16/2004  03:37 PM           898,048 libiconv2.dll
      10/09/2004  11:25 AM           101,888 libintl3.dll
                     3 File(s)      1,024,000 bytes
      

    宾果!现在您的 Apache 将正确解释 shebang 行。

    额外的一步

    对于那些想要从 Python 虚拟环境运行 Python CGI 脚本的人。

    1. 如果您在c:\py-venv 中创建了 Python 虚拟环境,请将以下几行添加到 Apache httpd.conf 中,以获得 Python CGI 脚本所在的目录。这些脚本将由 Apache 使用 Python 虚拟环境的二进制文件和模块执行。

      # Python virtual environment folder
      Define VENV "c:/py-venv"
      # Python CGI scripts location
      Define PY_CGI "c:/test/cgi"
      
      <Directory "${PY_CGI}">
          AllowOverride None
          Order allow,deny
          Allow from all
          Options ExecCGI FollowSymLinks
          Options -Indexes
          Require all granted
          SetEnv VIRTUAL_ENV ${VENV}
          SetEnv PATH "${VENV}/Scripts;${PATH}"
      </Directory>
      

    【讨论】:

      猜你喜欢
      • 2017-08-01
      • 2016-05-05
      • 2019-11-17
      • 2017-03-09
      • 1970-01-01
      • 2011-05-18
      • 2012-04-15
      • 2011-10-30
      相关资源
      最近更新 更多