我设置了一个 Debian 6 VPS 来托管几个小网站,它在默认网站上运行得很好。
接下来我创建了新用户并复制/粘贴默认 vhost 文件并使用a2ensite启用它并且只为该新用户相应地调整路径但由于某些原因未解析 PHP 文件并且仅显示它们的源。
所以,回顾一下:相同的虚拟主机设置,启用 PHP 模块,打开短标签(但未使用)
明确地说:我在这里和其他地方的网络上搜索并找到了一堆“解决方案”,但这些似乎都不适合我。
刚刚在日志中注意到这个字符串:
PHP Fatal error: Unknown: Failed opening required '/home/tester/public_html/index.php' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0
[Thu Mar 21 20:28:55 2013] [error] [client xxx.xxx.xxx.xxx] PHP Warning: Unknown: open_basedir restriction in effect. File(/home/tester/public_html/index.php) is not within the allowed path(s): (/home/user/public_html:/tmp) in Unknown on line 0
这是我的默认虚拟主机文件内容:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /home/user/public_html/
ErrorLog /home/user/logs/error.log
CustomLog /home/user/logs/access.log combined
<Directory "/home/user/public_html">
AllowOverride All
php_admin_flag engine on
php_admin_value open_basedir "/home/user/public_html:/tmp"
</Directory>
</VirtualHost>
PHP 的open_basedir会是这个问题的罪魁祸首吗?
是的,open_basedir 可能是这个问题的根源。你必须在路径中有 /home/tester/public_html/ 并且你有 /home/user。
看起来它跳过了 PHP 解析并且没有像我一样阻止对页面的访问 - 我发现类似的问题在这里解决了:https ://bbs.archlinux.org/viewtopic.php?id=57877 。
/第一个要求澄清的版本被删除,因为我被告知不符合 ServerFault 政策。/
耶!开始工作了!
在 /etc/apache2/mods-enabled/php5.conf 检查 Apache 的 PHP 模块 conf 设置:
它清楚地说:
所以我这样做了,然后重新启动了 Apache,瞧: