这几天迁移手中的一个站点,遇到一个问题,就是网站在新搭建的PHP环境下无法正常打开。网站目录下的静态文件能访问,就是所有PHP文件都无法访问,发挥404找不到页面提示。重新搭建环境都不行,只要把站点一上传上去就无法访问,网上找了很久都没找到解决方案。最后一个偶然操作被我决解了,发现了症结所在,就是网站根目录下的一个user.ini文件。

只要把这个文件删除就能够正常访问了,如果删除了还不能访问,就把PHP重启一下即可。
打开这个文件里面内容只有一行:

open_basedir=/data/www.yourdomain.net/:/tmp/:/proc/

看内容就大概知道,这行代码是定义网站根目录的,而只要这里指定的根目录与实际目录不一致就无法访问。网上查了下,PHP至5.3版本开始支持每个网站设置单独配置文件,PHP除了读取php.ini这个核心配置文件之外,还会扫描每个网站目录下的ini文件,并且优先级高于php.ini。