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