我已经搜索和阅读了其他有类似问题的帖子。我修复了.py文件中的shebang行,并确保httpd.conf有正确的配置。不幸的是,没有任何东西解决我的问题,我仍然得到可怕的错误-
[Mon Jun 01 10:37:02.994516 2020] [cgi:error] [pid 19596:tid 1196] (OS 1920)The file cannot be accessed by the system. : [client ::1:50159] couldn't create child process: 721920: upload_file.py
[Mon Jun 01 10:37:02.994516 2020] [cgi:error] [pid 19596:tid 1196] (OS 1920)The file cannot be accessed by the system. : [client ::1:50159] AH01223: couldn't spawn child process: C:/Users/raj_d/webroot/tsp_quick/cgi-bin/upload_file.py
Python脚本-
#!"C:\Users\raj_d\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\python.exe"
import cgi, os
import cgitb
cgitb.enable()
form = cgi.FieldStorage()
# Get filename here.
fileitem = form['filename']
# Test if the file was uploaded
if fileitem.filename:
# strip leading path from file name to avoid
# directory traversal attacks
fn = os.path.basename(fileitem.filename)
open('/tmp/' + fn, 'wb').write(fileitem.file.read())
message = 'The file "' + fn + '" was uploaded successfully'
else:
message = 'No file was uploaded'
print """\
Content-Type: text/html\n
<html>
<body>
<p>%s</p>
</body>
</html>
""" % (message,)
我玩过在shebang的完整路径上添加和删除引号的游戏,但这并没有帮助。
我在httpd.conf里有这些-
LoadModule cgi_module modules/mod_cgi.so
<Directory "C:\Users\raj_d\webroot\tsp_quick\cgi-bin">
AllowOverride None
# Options None
Options +ExecCGI
AddHandler cgi-script .py
Require all granted
</Directory>
我确定巨蟒是从蛇帮路上被驱逐出去的-
C:\>C:\Users\raj_d\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\python.exe
Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:37:02) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
任何帮助都将不胜感激。
先谢了。
研发部
2条答案
按热度按时间dauxcl2d1#
好吧,我想通了。
首先,也是最重要的,一个人应该始终遵循指导方针:)
在我的例子中,我太快放弃了从命令行运行脚本。我从Microsoft商店安装了Python 3.8.3,出于某种原因,每次我从命令行运行脚本时,都会弹出一个新的cmd窗口并很快关闭。我无法改变这种行为,也看不到哪里出了问题。
所以我卸载了python,从python的网站下载了新的安装程序,安装在一个安装我的开发工具的公共位置,现在,我可以从命令行运行我的脚本,并能够看到实际的问题是什么。
原来是print!下面是修改后的代码,它工作得很好,而且shebang也变得更简单了。
jtoj6r0c2#
我在Windows上尝试在Apache中执行 *.py文件时遇到了类似的问题。我遵循了Apache CGI安装指南,但问题(正如您提到的)是Python可执行文件
由于某些原因,Apache不允许您在这个位置使用Python解释器,我按照您的建议卸载了Python 3.10.x并重新安装在我的D:驱动器和嘿presto,它刚刚工作。我怀疑这是一个windows唯一的怪癖,可能是一个安全问题。