警告: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.'">';
?>
答案 0 :(得分:4)
Manuals目录是否可以成为webroot之外的目录的符号链接?
open_basedir
对您允许的路径中的符号链接也有效。
有关详细信息,请参阅PHP manual on open_basedir:
当脚本尝试使用例如fopen()或gzopen()打开文件时,将检查文件的位置。当文件在指定的目录树之外时,PHP将拒绝打开它。所有符号链接都已解析,因此使用符号链接无法避免此限制。如果该文件不存在,则无法解析符号链接,并将文件名与(已解析的)open_basedir进行比较。
答案 1 :(得分:0)
看起来PHP正在Safe Mode中运行。此限制意味着您无法读取Web根目录之外的任何文件。这可能是updater.php试图做的事情。