0

私は30のウェブサイトを持つサーバーを持っています。今、サイト A からサイト B にファイルをコピーしたいと考えています。

コード:

$sExternPath  = str_replace(strtolower(SITENAME), strtolower($aBoardInfo['name']), CORE_PATH_PRIVATE); 
$sNewLogo     = file_get_contents(CORE_PATH_PRIVATE.'users_upload/company_logos/'.$sFileName);
//Put it in the folder 
file_put_contents($sExternPath.$sFileName, $sNewLogo);

エラー:

[20-Mar-2015 10:32:30] PHP 警告: file_put_contents() [function.file-put-contents]: open_basedir 制限が有効です。ファイル (/var/www/vhosts/SITEB.nl/private/logo.jpg) が許可されたパス内にありません: (/var/www/vhosts/SITEA.nl/:/tmp/) in /var/ www/vhosts/SITEA.nl/httpdocs/pages/login/script.php 行 1262

[20-Mar-2015 10:32:30] PHP 警告: file_put_contents(/var/www/vhosts/SITEB.nl/private/logo.jpg) [function.file-put-contents]: ストリームを開くことができませんでした: Bewerking /var/www/vhosts/SITEA.nl/httpdocs/pages/login/script.php の 1262 行目の niet toegestaan

4

1 に答える 1

0

/var/www/vhosts/SITEB.nl は、open_basedir 設定で設定されたツリーの外にあります - php.ini ファイルを編集して、open_basedir 設定を「/var/www/vhosts/:/tmp/」 '/var/www/vhosts/SITEA.nl/:/tmp/' またはコメントアウトして設定を解除し、apache を再起動します。

http://php.net/manual/en/ini.core.php#ini.open-basedir

スクリプトが include や fopen() などを使用してファイルシステムにアクセスしようとすると、ファイルの場所がチェックされます。ファイルが指定されたディレクトリ ツリーの外にある場合、PHP はそのファイルへのアクセスを拒否します。すべてのシンボリック リンクは解決されるため、シンボリック リンクでこの制限を回避することはできません。ファイルが存在しない場合、シンボリック リンクを解決できず、ファイル名が (解決された) open_basedir と比較されます。

于 2015-03-20T09:56:07.083 に答える