在Python WSGI环境中运行PHP脚本
我有一个简单的PHP脚本,它可以把文件夹里的内容以XML格式输出。我用这个脚本来告诉一个Flash幻灯片可以显示哪些文件。
我刚把这个Flash放到一个用Django做的网站上,但现在这个PHP文件直接被当作普通文件提供,而不是被解析。
这个文件在我的媒体目录下,和图片放在同一个文件夹里。
我用的服务器是Plesk,所以我在每个域名的vhost.conf文件里做配置(这个文件好像会被包含到主Apache配置里)。
它的内容大致是这样的:
WSGIScriptAlias / /var/www/vhosts/<domain>/conf/django.wsgi
Alias /media/ /var/www/vhosts/<domain>/httpdocs/media/
我以为这意味着对根目录下的请求会交给Django处理。
但是如果请求的是/media/...,那就会像平常一样由Apache从指定的目录提供文件。
这样做对图片是有效的,但PHP文件却没有被解析。
我该怎么办呢?
4 个回答
1
这里的 WSGIScriptAlias
指令会把本来应该由 Alias
处理的链接给“吞掉”了。你需要把它们的顺序调换一下。
3
也许可以看看这个讨论,然后把你的PHP脚本转换成Python:
2
结果发现问题有两个,导致很难找到。
感谢Ignacio Vazquez-Abrams,我的代码行顺序搞错了。
解决了这个问题后,PHP还是无法提供我的文件,因为它在一个从外部链接过来的目录里,这个目录不在允许的路径
内。我通过关闭这个虚拟主机的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