读取webroot上方的文件

时间:2011-06-08 11:04:23

标签: php cakephp

在php中,我正在尝试读取位于Web根目录上方的文件(例如/home/[username]/games/)。我正在尝试读取.swf和.xml文件。我使用此代码在本地LAMP服务器上运行良好:

@readfile("/home/[username]/games/hangman/example.xml");

但是,在外部服务器上测试它,它不起作用。日志中没有php错误,但是当我尝试file_exists()时,它返回false。我已检查并仔细检查该文件是否存在于该路径中。

文件权限似乎是正确的(它们与我的本地服务器相同),并且文件的所有者是正确的用户。

修改

稍微更新一下;我按照@gnur的说法进行操作,并在虚拟主机设置中的httpd.conf中设置我的基本名称:

php_admin_value open_basedir "/:/home/[username]/games/"

我之前尝试过设置它做一个不同的值,并且它抛出了一个错误:

open_basedir restriction in effect. File(/home/[username]/games/example.xml) is not within the allowed path

现在,我在尝试读取文件时遇到permission denied错误。所以我想知道文件权限或所有者是不是正确。

这些是我对游戏目录下文件夹的当前权限:

drwxrwxr-x 2 [username] [username] 4.0K Jun  1 10:13 hangman

然后是该目录下的文件(我实际上试图访问的那些文件):

-rwxrwxr-x 1 [username] [username]  293 Jun  1 10:13 example.xml
-rwxrwxr-x 1 [username] [username] 204K Jun  1 10:13 hangman.swf

1 个答案:

答案 0 :(得分:3)

这与php.ini的open_basedir值有关,有关详细信息,请参阅http://php.net/manual/en/ini.core.php