为什么 php 不能从别名目录运行?

为什么 php 不能从别名目录运行?

我正在尝试使用 nclud 的windex将我的 apache 目录列表风格化为内部项目(安全性不是太大的问题)

Windex 使用指向 php 文件的 HeaderName 和 ReadmeName 指令,只要 windex php 文件位于 VirtualHost 所提供服务的目录中,一切就可以正常工作。

但是,我想在 /usr/share/windex 中进行标准安装,原因有二。首先,我不希望 Windex 文件夹出现在列表中。其次,我想在多个虚拟主机上使用它,然后针对所有虚拟主机修改它。

因此 .htaccess 文件保留在我的 /srv/www 目录中。在我的虚拟主机的 httpd.conf 中,我指定了一个别名:

Alias /windex/ "/usr/share/windex"
<Directory "/windex">
    Options Indexes,FollowSymlinks
    AllowOveride All
    Order Allow,Deny
    Allow from all
</Directory>
<Directory "/usr/share/windex">
    Options Indexes,FollowSymlinks
    AllowOveride All
    Order Allow,Deny
    Allow from all
</Directory>

现在,这对 /windex/icons/* 和 /windex/css/* 中的图像和 css 文件有效,所有样式均已正确应用。但是,php 文件未得到处理。但是,如果我浏览到 /windex/header.php 文件,则 PHP 会正确处理该文件。

谢谢詹姆斯

答案1

安装说明

如果您不希望 windex 文件夹位于网站顶部,则需要更改 config.php 中的文件路径、所有 CSS 文件以及任何源自 main.htaccess 的 .htaccess 文件

答案2

嗨,我找到了答案。我在 Apache 中增加了错误日志记录,发现了以下内容:

Fri Jul 30 14:35:31 2010] [error] [client 160.50.3.128] PHP Warning:  require_once(/srv/www/8081/windex/markdown.php): failed to open stream: No such file or directory in /usr/share/windex/config.php on line 84
[Fri Jul 30 14:35:31 2010] [error] [client 160.50.3.128] PHP Fatal error:  require_once(): Failed opening required '/srv/www/8081/windex/markdown.php' (include_path='.:/usr/share/php:/usr/share/pear') in /usr/share/windex/config.php on line 84

我发现开发人员使用以下几行来包含 markdown 和 Textile 功能:

require_once( $_SERVER["DOCUMENT_ROOT"]. $windexPath . '/textile.php');

对于 markdown.php,下面还有类似的一行 - 这导致 PHP 在路径 '/srv/www/8081/windex/markdown.php' 中查找,而不仅仅是在 config.php 所在的目录中查找 - 我将该行更改为:

require_once( 'textile.php');

现在一切都好了。感谢您的帮助。

相关内容