在Python WSGI环境中运行PHP脚本

时间:2010-01-29 03:06:40

标签: php python django apache wsgi

我有一个简单的PHP脚本,以XML格式输出目录列表。我用它来让flash幻灯片显示可以显示的文件。

我刚刚将Flash添加到由Django提供支持的网站上,PHP文件现在按原样提供,而不是解析。

它位于我的媒体目录下的图像目录中。

我使用的服务器运行plesk,所以我为vhost.conf文件中的每个域执行配置(我认为它包含在主appache中)

看起来像这样:

WSGIScriptAlias / /var/www/vhosts/<domain>/conf/django.wsgi
Alias /media/ /var/www/vhosts/<domain>/httpdocs/media/

我认为这意味着对/下的任何内容的请求都会通过django来处理 除非他们是/ media / ...然后他们通过apache从指定的目录正常服务。

适用于图像,但不解析PHP文件。

我该怎么办?

4 个答案:

答案 0 :(得分:3)

也许阅读这个帖子,并将PHP脚本移植到Python:

os.walk() python: xml representation of a directory structure, recursion

答案 1 :(得分:1)

如果你没有配置Apache,那么它知道'/ media'目录下的.php文件应该以某种方式由PHP处理,它们不会。所以,mod_wsgi配置很好,问题可能是你的PHP配置。

您如何配置PHP?你使用mod_php,还是通过fastcgi使用PHP?如何配置Apache以便它知道将.php文件视为PHP以及该配置应用于哪些目录?

答案 2 :(得分:1)

WSGIScriptAlias指令吞噬了Alias的网址。交换订单。

答案 3 :(得分:1)

事实证明问题是两件事,很难找到。

感谢Ignacio Vazquez-Abrams,我的排线错误。

一旦解决了这个问题,PHP将无法提供我的文件,因为它位于allowed path(s)外部符号链接的目录中。我通过关闭此vhost的open_basedir限制解决了这个问题。我的新vhost.conf位于下方。

<Directory /var/www/vhosts/<domain>/httpdocs>
    php_admin_flag engine on
    php_admin_value open_basedir none
</Directory>

Alias /media/ /var/www/vhosts/<domain>/httpdocs/media/

WSGIScriptAlias / /var/www/vhosts/<domain>/conf/django.wsgi