我有一个名为connect.php的文件,它提供了访问mysql数据库的详细信息,为了安全起见,它被保存在我的web目录之外,但我无法使用require()或include()访问我的页面。为了测试原因,我创建了一个非常简单的程序,名为test.php:
<?php
echo "This one works!";
?>
如果我把它放在我的web目录中,并使用调用它
include('Test.php');
然后打印消息。如果我把它留在web目录中,并做一个绝对路径:
include('/home/eddy/web/html/Test.php');
那就行了,但如果我把它放在其他地方并尝试链接到它:
include('/home/eddy/security/Test.php');
或
include('../../security/Test.php');
然后它什么也不做。
echo 'X';
echo include('/home/eddy/security/Test.php');
echo 'Y';
返回"XY";
我没有出现错误消息,我相信系统管理员出于安全原因已经关闭了错误警告。
有什么想法吗?
首先尝试在您的文件中打开错误报告,通过在php文件的顶部包含以下内容来进行包含:
ini_set('display_errors',1);
error_reporting(E_ALL);
根据您的服务器配置,它应该显示错误。
然后,就您的问题而言,您需要检查您对/home/eddy/security/
文件夹以及文件/home/eddy/security/Test.php
的所有权和写/读权限
您需要检查的是,该文件夹和文件与您的普通webroot文件夹具有相同的所有权,并且该文件夹和文件夹具有读取权限。假设您的Web服务器用户是www数据,您可以尝试以下操作:
chown -R www-data:www-data /home/eddy/security
chmod 744 /home/eddy/security
chmod 644 /home/eddy/security/Test.php
您运行的是哪种类型的web服务器?根据经验,如果是Apache,那么你可以读取服务器默认webroot目录之外的文件,所以我很想知道错误报告和/或权限是否真的为你解决了这个问题。