我有一个包含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);
错误:
[2015年3月20日10:32:30] PHP警告:file_put_contents()[function.file-put-contents]:open_basedir限制生效。文件(/var/www/vhosts/SITEB.nl/private/logo.jpg)不在/ var /中的允许路径:(/ var / www / vhosts / SITEA.nl /:/ tmp /) www / vhosts / SITEA.nl / httpdocs / pages / login / script.php第1262行
[2015年3月20日10:32:30] PHP警告:file_put_contents(/var/www/vhosts/SITEB.nl/private/logo.jpg)[function.file-put-contents]:无法打开流:在1262行的/var/www/vhosts/SITEA.nl/httpdocs/pages/login/script.php中删除niet toegestaan
答案 0 :(得分: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进行比较。