1

项目使用CI框架,从Windows平台迁移到LNMP平台上的时候发现打开首页的时候提示
open_basedir
然后看到这个提示的时候下意识的就去了php.ini配置文件中加了open_basedir=/vagrant/vbee/:/tmp/:/proc/ 重启后依然不行。

于是各种GUGO。找到了很多都是关于Apache的。试了很多方法都无法解决。
比如Apache中类似下面这样

<DirectoryMatch "/home/sites/site81/">
    php_admin_value open_basedir "/vagrant/vbee2:/tmp/:/"
</DirectoryMatch>

但是nginx中不太懂配置,所以直接在nginx.conf中的server段中加入了
fastcgi_param PHP_ADMIN_VALUE open_basedir=$document_root/:/usr/local/lib/php/:/tmp/;
发现还是没有解决。后来去SF.GG上提问一个网友给了提示,说是报错信息中/mnt/web_site_log/www.vbee.com/目录需要加入到open_basedir中,这才想到刚刚上面的那句配置少了/mnt/web_site_log/www.vbee.com/这个目录。于是后来加入到虚拟主机的配置文件server{}中发现终于OK了。

location ~ [^/]\.php(/|$)
        {
            # comment try_files $uri =404; to enable pathinfo
            try_files $uri =404;
            fastcgi_pass  unix:/tmp/php-cgi.sock;
            fastcgi_index index.php;
            include fastcgi.conf;
            fastcgi_param PHP_ADMIN_VALUE open_basedir=$document_root/:/mnt/web_site_log/www.vbee.com/:/tmp/;
            #include pathinfo.conf;
        }

只是目前还没太明白这样配置的原理,有空还真的了解了解服务器的配置。
参考资料:https://centminmod.com/nginx_configure_xenforo_seo_friendly_urls.html


2015.12.01更新

php5.3以后可以通过web根目录下的.user.ini文件进行open_base的配置,即在网站根目录下存在.user.ini文件,内容类似如下

open_basedir=/vagrant/mongo:/tmp/:/proc/:/mnt/web_site_log/www.abc.com/

不过一些敏感的配置还是不能使用这个配置,比如disable_functions
参考http://drops.wooyun.org/tips/3424


一个向往前端的后端工程师
1.3k 声望46 粉丝

一个向往前端的后端工程师