在 Windows 上设置 XAMPP apache 以运行 .py Python 文件:ScriptInterpreterSource Registry-Strict

在 Windows 上设置 XAMPP apache 以运行 .py Python 文件:ScriptInterpreterSource Registry-Strict

我已经安装了最新版本的 XAMPP (带 PHP 7.2.2) 设置,并在 Windows 10 笔记本电脑上为我的 PHP 编程课程顺利运行 apache。我能够让 CGI 正常工作,在浏览器窗口中正确运行 .py 文件,方法是使用选项 +ExecCGI 并将 .py 添加到 /XAMPP/apache/conf/httpd.conf 中的 AddHandler 行。

通常,为了使 .py 文件正确运行,使用 CGI 时前两行需要如下所示:

#!C:/Python/Python36_x86/python.exe
print("Content-Type: text/html\n")

但是,在阅读了 Apache2.4 中关于 ScriptInterpreterSource 的文档后:https://httpd.apache.org/docs/2.4/mod/core.html#scriptinterpretersource

我添加了文档中提到的正确注册表项以及以下行:

ScriptInterpreterSource Registry-Strict

到我的 /XAMPP/apache/conf/httpd.conf

并且能够在没有前两行的情况下运行我的 Python 脚本。但是,它仍然需要在第一行添加一个额外的 print() 语句(或 print('\n') )。

===========================================================================

我的问题:

有没有什么方法可以避免在 Python 脚本的第一行使用 print/newline 语句?

答案1

有没有什么方法可以避免在 Python 脚本的第一行使用 print/newline 语句?

可能不是...至少不是通过 CGI 使用 Python。

对于给定的 CGI 脚本(不仅仅是 Python 中的脚本),CRLF在返回到浏览器的任何数据的开头都需要有此“空行”()的语言等效项。虽然 Apache 从注册表中获取了标头的解释器路径和值Content-type,但它似乎不包括此行。

它仍然需要print()在第一行(或print('\n'))上添加一个额外的语句。

为了清楚起见,如果出现任何混淆,它只需是您从脚本输出的第一行文本(如果有),例如:

# Print our Python version

import sys

version = sys.version_info
full_version = str(version.major) + '.' + str(version.minor) + '.' + str(version.micro)

# 8000 more lines that don't include print()...

# === Our first line(s) of text output ===
# print ('Content-type: text/html')
print ('')

print ('Python Version: ', full_version)

注意(对于其他所有人):如果您没有像 OP 那样注册所有内容,您仍然需要一个哈希爆炸(例如!# python您的第一行)并且应该取消注释print ('Content-type: text/html')


相关内容