基础问题,我读到这个吗?

时间:2012-06-13 18:44:22

标签: php plesk open-basedir

  

警告:touch()[function.touch]:open_basedir限制生效。   File()不在允许的路径中:   (/var/www/vhosts/site.com/httpdocs/)in   第5行的/var/www/vhosts/site.com/httpdocs/Manuals/updater.php那里   加载手册时出错,请按后退按钮试试   试。

我试图弄清楚为什么这不起作用 - 目前,我正在使用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.'">';
?>

2 个答案:

答案 0 :(得分:4)

Manuals目录是否可以成为webroot之外的目录的符号链接?

open_basedir对您允许的路径中的符号链接也有效。

有关详细信息,请参阅PHP manual on open_basedir

  

当脚本尝试使用例如fopen()或gzopen()打开文件时,将检查文件的位置。当文件在指定的目录树之外时,PHP将拒绝打开它。所有符号链接都已解析,因此使用符号链接无法避免此限制。如果该文件不存在,则无法解析符号链接,并将文件名与(已解析的)open_basedir进行比较。

答案 1 :(得分:0)

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