一个私活,10个站点在同一服务器上
其中有很多资源是相同的,于是我把他放在同一个目录里面,对应软连接
如下所示,a,b,c三个站点的uploadfile
全都用软连接到gloab_assets
文件夹
a.com
-uploadfile
b.com
-uploadfile
c.com
-uploadfile
global_assets
-uploadfile
执行爬虫脚本的时候存到gloab_assets里面,a,b,c站点g读取没有问题
但是写的时候问题,再往a.com/uploadfile/
写入和创建文件夹报错
排查到phpcms/libs/classes/attachment.class.php
upload
方法中
if(!dir_create($this->savepath)) {
$this->error = '8';
return false;
}
初步以为是软连接问题,不能在有软连接的目录里面写
后在站点目录下创建软连接,再写到带有软连接的目录里
a.com
- linkTarget
- linkSource
向linkSource写入,可以同步到linkTarget
向linkTarget写入,也可以同步到linkSource
排查后发现,站点根目录存在.user.ini
文件,
内容为open_basedir=/www/wwwroot/a.com/:/tmp/
此文件内容为阻止php跨目录访问而设置的白名单
追加内容/www/wwwroot/a.com/:/tmp/:/www/wwwroot/
重启php程序或等待五分钟,即可跨站写入