一次php涉及跨域功能的麻烦及解决方案
一,功能及描述
1,在后台管理网站(php)admin.xxx.com(以下简称admin),拉取并编辑aaa.xxx.com(php,以下简称aaa)上的图片及文件
2,file_get_contents、getimageinfo:admin查询aaa上layout.php文件及查询img是否存在
3,fwrite:admin写入index.php文件到aaa
二,初步方案
在admin的/data/fs与aaa的/data/aaa/fs运用mount命令挂载到一起,从而实现admin直接写文件到/data/fs后aaa就可在/data/aaa/fs实时更新到文件
三,遇到的麻烦
1,admin通过执行file_get_contents( 'aaa.xxx.com/layout' )、getimageinfo()时在正式服务器上被配置为禁止了,但是开发服务器上是开放的
2,admin上传同名文件覆盖到挂载目录后aaa无法实时更新,但是在目录下执行ls或者ll命令后就能更新到
四,解决方案
1,admin通过执行file_get_contents( '/data/fs/layout.php' )绝对路径的方式来执行后发现layout.php依赖了config.php,mysql.php等文件,依赖文件也需要用绝对路径的方式来引用,发现行不通,
因为依赖文件在aaa上不在admin上, 解决方案后来更改为采用admin通过ajax的方式访问aaa.xxx.com/layout.php后解决
2,挂载目录文件无法实时更新的解决方案为上传文件名加上时间戳(bg_img1501535156.jpg)的文件来解决,但是同名文件为什么不更新的问题没查到原因,知道的请告知一下