Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.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
如何使用Apache处理Python文件_Python_Apache_Cgi - Fatal编程技术网

如何使用Apache处理Python文件

如何使用Apache处理Python文件,python,apache,cgi,Python,Apache,Cgi,因此,我想进入React本机开发,并决定将Python作为我的后端,但由于某些原因,我无法正确配置Apache。从请求中成功获取结果的唯一方法是在文档的开头包含到python.exe的路径,如下所示: !C:\Users\Name\PycharmProjects\AppName\venv\Scripts\python.exe 但问题是Python控制台执行的文件太多,如果我想通过手机访问它,我会遇到以下错误: 服务器遇到内部错误,无法完成您的请求。服务器过载或CGI脚本中存在错误 所以我的问题

因此,我想进入React本机开发,并决定将Python作为我的后端,但由于某些原因,我无法正确配置Apache。从请求中成功获取结果的唯一方法是在文档的开头包含到
python.exe的路径,如下所示:

!C:\Users\Name\PycharmProjects\AppName\venv\Scripts\python.exe
但问题是Python控制台执行的文件太多,如果我想通过手机访问它,我会遇到以下错误:

服务器遇到内部错误,无法完成您的请求。服务器过载或CGI脚本中存在错误

所以我的问题是:


是否有任何方式可以配置Apache来执行文件,而不需要py控制台,这样请求就可以由设备处理,哪个没有安装Python控制台?

如果您从移动设备连接到
http://192.168.1.3/HelloWorld.py
在服务器上使用
CGI
则代码应在服务器上执行,而不是在移动设备上执行。如果
CGI
不起作用,则服务器可能会尝试将代码作为普通文件发送,然后移动设备可能会尝试在本地运行代码,但这是错误的-
CGI
服务器应该在服务器上运行代码

开始时,我会将代码放入子文件夹
cgi-bin
,以
http://192.168.1.3/cgi-bin/HelloWorld.py
因为大多数
CGI
服务器默认只在此子文件夹中运行代码


在Linux上,脚本需要shebang

#!/usr/bin/env python
在第一行中,它应该是可执行的

chmod a+x script.py

CGI
也有一些规则如何生成将发送给客户端的数据。它可能需要在开始时为
HTTP
protocol提供额外的信息,并且只使用print(“helloworld”)可能会生成错误的数据,并且可能无法发送。在
CGI
脚本的任何教程中都应该有它。参见模块


要运行Python代码,Apache需要模块
mod_cgi
mod_fcgi

mod\u cgi
mod\u fcgi
可以运行不同语言的脚本:
Python
Perl
Ruby
,等等,甚至
Bash
PHP
C
/
C++/code>/
Java


Python3有标准模块,也可以用作简单服务器

python3 -m http.server --cgi 

它将为运行它的文件夹中的所有文件提供服务。它运行子文件夹
cgi-bin/
中的文件-请参阅文档:

我不理解您的问题-Apache在服务器上运行,如果它运行python代码,那么它在服务器上运行,而不是在用户设备上。也许你没有用Apache运行它。您是否已在Apache中安装模块
mod_cgi
mod_fcgi
mod_python
?或者使用更流行的方法,使用Flask/Django之类的web框架,而不是使用Apache。“服务器遇到内部错误,无法完成您的请求。服务器过载或CGI脚本出错。”我无法使apache正确执行该文件,我已启用mod_CGI.so。还创建了httpd.conf中的特定文件,该文件仅负责python文件。。。可能会尝试Django或Flask,但我只是好奇apache是否可以执行python文件。顺便说一句:据我所知,作为标准,它只在子文件夹
cgi-bin/
中运行文件,所以首先可以尝试将代码放在这个文件夹中。在Linux上,脚本需要shebang
#/usr/bin/env python
在第一行,如果您从移动设备连接到
http://192.168.1.3/HelloWorld.py
在服务器上(使用CGI),则代码应在服务器上执行,而不是在移动设备上执行。若CGI不工作,那个么服务器可能会尝试将代码作为普通文件发送,然后mobile可能会尝试在本地运行它,但这是错误的—CGI服务器应该在服务器上运行代码。开始时,我会将代码放入子文件夹
cgi-bin
,以
http://192.168.1.3/cgi-bin/HelloWorld.py
因为大多数CGI服务器默认只在此子文件夹中运行代码。顺便说一句:CGI还有一些规则如何生成数据并发送给客户端。在开始时,它可能需要HTTP协议的额外信息,并且仅使用
打印(“Hello World”)
可能会生成错误的数据,并且可能无法发送。在CGI脚本的任何教程中都应该有它。参见模块