如何使用 xampp 在 ubuntu 中运行 python cgi 脚本

Posted

技术标签:

【中文标题】如何使用 xampp 在 ubuntu 中运行 python cgi 脚本【英文标题】:how to run python cgi script in ubuntu using xampp 【发布时间】:2016-09-11 22:59:32 【问题描述】:

我无法使用 xampp 在 ubuntu 中运行 python cgi 脚本

我在 httpd.conf(/opt/lampp/etc) 中做了必要的修改

<Directory "/opt/lampp/htdocs">
  Options +ExecCGI
  AddHandler cgi-script .cgi .py
  Order allow,deny
  Allow from all
</Directory>

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

我的python脚本文件是

#!/usr/bin/python
# -*- coding: UTF-8 -*-# enable debugging
import cgitb
cgitb.enable()    
print "Content-Type: text/html;charset=utf-8"
print "Hello World!"

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

提前致谢!

【问题讨论】:

运行后,出现“服务器遇到内部错误,无法完成您的请求。错误消息:在 headers 之前结束脚本输出:labels.py” 服务器上部署的Python脚本中,第2条和第3条print语句之间是否有换行符? 【参考方案1】:

CGI 脚本的输出应该由两个部分组成,分开 由一个空行。第一部分包含许多标题, 告诉客户正在跟踪什么样的数据。

https://docs.python.org/2/library/cgi.html

在您当前的代码示例中,缺少空行(不在您最初发布的代码中)。尝试将第一个 print 语句更改为:

print "Content-Type: text/html;charset=utf-8\n"

它应该可以工作(至少它在带有 Ubuntu 和 Apache 的亚马逊服务器上可以工作)。

我个人使用 Python 和 cgi 的故障排除工作流程:

检查脚本的权限,例如它归 www-data 所有吗? 从命令行调用 Python 脚本时是否运行?即没有简单的拼写错误、缩进错误等。 尝试使用记录器(因为您无法从printstdout)查看崩溃的位置和时间,例如这个:http://www.electricmonk.nl/log/2011/08/14/redirect-stdout-and-stderr-to-a-logger-in-python/

【讨论】:

我在 error.log 中收到错误 [Tue May 17 11:54:24.307673 2016] [cgid:error] [pid 15122:tid 140289761994624] (2)没有这样的文件或目录:AH01241: '/var/www/html/test/labels.py' 的执行失败 [2016 年 5 月 17 日星期二 11:54:24.307933] [cgid:error] [pid 15020:tid 140289461118720] [client 127.0.0.1:60209] End of标题前的脚本输出:labels.py 在您的 httpd.conf 中,您的 cgi 目录是“/opt/lampp/htdocs”,但 Python 脚本似乎在“/var/www/html/test/labels.py”中。移动脚本或更改 http.conf 是否有效? 并从网站linux.com/blog/configuring-apache2-run-python-scripts获取想法 你能发布你的 http.conf 条目吗? ServerAdmin webmaster@localhost DocumentRoot /var/www/html 选项 FollowSymLinks AllowOverride None 选项 +ExecCGI AddHandler cgi-script 。 cgi .py Order allow,deny Allow from all ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ AllowOverride None Options +ExecCGI -MultiViews + SymLinksIfOwnerMatch Order allow,deny Allow from all

以上是关于如何使用 xampp 在 ubuntu 中运行 python cgi 脚本的主要内容,如果未能解决你的问题,请参考以下文章

在 Ubuntu (laravel) 中使用 XAMPP 运行 PHP 和 MySQL

Xampp没有运行python

xampp 服务器(如何启动和运行)

如何在 Ubuntu 中将 xampp 控制面板设置带到桌面? [关闭]

为 Ubuntu 14.04 安装和配置 xampp

为啥我的网站在 xampp 中运行,但不在我的 Apache 服务器和我在 Ubuntu 上设置的 mySQL 中运行?