记一次php跨目录存储问题

发表于:2024-02-21 14:04php,技术热度:24喜欢:0

一个私活,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程序或等待五分钟,即可跨站写入