0

警告: touch() [function.touch]: open_basedir 制限が有効です。File() は許可されたパス内にありません: (/var/www/vhosts/site.com/httpdocs/) in /var/www/vhosts/site.com/httpdocs/Manuals/updater.php 行 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 がSafe Modeで実行されているようです。この制限は、Web ルート以外のファイルを読み取ることができないことを意味します。それはおそらく updater.php がやろうとしていることです。

于 2012-06-13T18:51:49.950 に答える