簡體   English   中英

如何在Windows和Linux(apache)上使用相同的python cgi文件?

[英]How to use same python cgi file on windows and linux (apache)?

在linux / apache服務器上使用python作為CGI,第一行(定義解釋器,shebang)應該是這樣的:

#!/usr/bin/env python 

在windows / apache服務器上運行相同的python CGI,第一行(定義解釋器的那一行)應該是這樣的:(假設python安裝到c:/ python27)

#!c:/python27/python.exe

是否有選項可以設置相同的行,以便在將文件從linux移動到Windows時不需要進行任何更改?

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

在Windows下 - 下一次更改apache配置文件:

AddHandler cgi-script .py 

從下一行中刪除“hash”(“#”):

#ScriptInterpreterSource Registry 

在這里可以找到更多細節和一些關於安全性的其他數據: 如何使用Apache“ScriptInterpreterSource Registry-Strict”指令?

所以你有shebang line #!/usr/bin/env python你在Windows中缺少的是字面上的env.exe應用程序。

  1. 從GnuWin項目https://sourceforge.net/projects/gnuwin32/files/coreutils/5.3.0/下載以下ZIP文件:

    • coreutils-5.3.0-bin.zip

    • coreutils-5.3.0-dep.zip

  2. 在Apache HTTP for Windows啟動的同一驅動器上創建\\ usr \\ bin文件夾,例如: c:\\usr\\bin

  3. 解壓縮到創建的\\ usr \\ bin文件夾:

    • 來自coreutils-5.3.0-bin.zip的env.exe ;

    • libiconv2.dll,來自coreutils-5.3.0-dep.zip的libintl3.dll

  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> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM