先说结果:修改了fastcgi.conf中的配置解决问题。


服务器环境用lnmp自动安装的,头一次访问laravel的时候,报500错误,打开日志看了看,报错如下:

看了看,大概意思是这样:

1,域名的根目录是:/data/.composer/vendor/testapp/public
2,某个地方对open_basedir做了限制,限制在:/data/.composer/vendor/testapp/public、/tmp/、/proc/
3,但是/data/.composer/vendor/testapp/public/index.php中某个地方需要引用上一级目录的php文件,但是由于做了限制,所以打不开,从而报错。(即:open_basedir 将 PHP 所能打开的文件限制在指定的目录树,包括文件本身[来自])

网上搜索一番,首先是说lnmp在创建vhost的时候,会在vhost的根目录下创建.user.ini的文件,里面限制了open_basedir(来自这里,以及这里),找到后内容如下:

想当然地把这里改为:

重启nginx(同时重启php-fpm也试过),无效。同样出自上述文章,在php.ini中找到了open_basedir的配置,原本无值且被注释,改为:

无效。(上述两个更改处都交叉尝试过,即改1不改2,改2不改1,1、2都改)

随后在这里,发现原来nginx的配置里也有对open_basedir的配置,如下:

但是由于对vhost的根目录直接定义的变量($document_root),所以似乎没法在这个上面做文章,只好在这里把我需要访问的目录加了进去,测试可行。当然,这种方法肯定违背了open_basedir的初衷,也有增加安全隐患,慢慢研究吧。(此修改生效时,上述对php.ini、.user.ini的修改均已恢复)

附,在修改.user.ini的时候,会报如下错误(以删除为例):

于是又学习了一个基本操作…

最后附上LNMP.org对于open_basedir(包括但不限于)的解释:LNMP下防跨站、跨目录安全设置,仅支持PHP 5.3.3以上版本

    分享到:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.