0

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

我试图弄清楚为什么这不起作用 - 目前,我正在使用 plesk,它被设置为默认值,这应该可以工作,因为它位于 httpdocs 的子目录中......

有任何想法吗?

更新程序.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

2 回答 2

4

Manuals 目录是否会成为指向 webroot 外部目录的符号链接?

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

有关更多信息,请参阅关于 open_basedir 的 PHP 手册,其中指出:

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

于 2012-06-13T18:50:30.847 回答
0

看起来 PHP 在安全模式下运行。此限制意味着您无法读取 Web 根目录之外的任何文件。这可能就是 updater.php 正在尝试做的事情。

于 2012-06-13T18:51:49.950 回答