2012-06-13 19 views
0

警告:touch()[function.touch]:open_basedir限制有效。 文件()不在允许的路径中: (/var/www/vhosts/site.com/httpdocs/) /var/www/vhosts/site.com/httpdocs/Manuals/updater.php在线5有 加载您的手册时出错,请按返回按钮并再次尝试 。basedir问题,我正在阅读这个权利?

即时通讯设法弄清楚为什么这不起作用 - 目前,我使用plesk,它被设置为默认,这应该工作,因为这是在httpdocs的子目录内...

有什么想法?

UPDATER.PHP

<?php 
// $URL="manualframe.php"; 
$URL=$_GET["URL"]; 
// header('Location: '.$URL.'') ; 
if (touch($URL)) { 
echo 'loading!'; 
} else { 
echo 'There was an error loading your Manual, please press the back button and try again.'; 
} 
echo '<meta http-equiv="refresh" content="1;URL='.$URL.'">'; 
?> 

回答

4

请问手册目录是一个符号链接到Web根目录以外的目录中的任何机会?

open_basedir也对允许的路径中的符号链接起作用。

当脚本试图打开与文件,例如,fopen()函数或者gzopen(),该文件的位置被检测:

有关详细信息,其中规定见PHP manual on open_basedir。当文件在指定的目录树之外时,PHP将拒绝打开它。所有符号链接都已解决,因此无法通过符号链接来避免此限制。如果该文件不存在,那么符号链接将无法解析,并将文件名与(已解析)open_basedir进行比较。

+0

示例文件位于site.com/manuals/folder1/sample.pdf 这里没有愚蠢的业务:P – NRGdallas

+0

在这种情况下,您能否向我们提供updater.php的代码示例? (特别是第5行)。我误解了错误消息;手册/ updater.php位于允许的路径内,但您尝试“触摸”的文件不是,所以您的语法可能有错误。 (很可能是绝对/相对路径问题,例如,当您尝试'touch('/ folder1/sample.pdf')'而不是'touch('./ folder1/sample.pdf')' –

+0

无法粘贴代码代码添加到主帖子中 显然是我试过的'/ folder1''./folder1',甚至只是'folder1'-nothin。 – NRGdallas

0

看起来PHP运行在Safe Mode。此限制意味着您无法读取网页根目录之外的任何文件。这可能是updater.php试图做的事情。

+0

每个plesk面板都禁用安全模式。 所有updater.php所做的都是在手册子文件夹中取一个文件,触摸它,然后重定向到它。 – NRGdallas