laravel_and_user_ini_file

  1. 如果一直报错,没有任何提示信息,考虑将php的报错log打开

    1
    2
    vim php.ini
    display_errors On
  2. 使用lnmp创建vhost时,会生成一个.user.ini这个文件主要是用来告诉php-fpm的php跨目录访问,因为设定的laravel root path是类似于/home/wwwroot/blog/public这样的,所以这个文件会在public路径下,同时php的访问范围也会限定在public路径下:
    open_basedir=/home/wwwroot/blog/public:/tmp/:/proc/
    但是Laravel这类框架一般会在public访问上级目录中的文件例如../vendor/autoload.php,此时需要修改user.ini中的改为open_basedir=/home/wwwroot/blog:/tmp/:/proc/.

    1
    2
    3
    chatrr -i .user.ini
    vim .user.ini
    chatrr +i .user.ini
此时还会有一个问题是修改.user.ini之后即使重启php-fpm之后,文件也没有生效,页面上依然提示blog路径不在blog/public之下,可能的原因是`fastcgi.conf`这个全局配置文件中的配置覆盖了,此时需要将这行注释掉:
1
2
vim /usr/local/nginx/conf/fastcgi.conf
# fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
  1. 关于权限设定
    此时访问应该就正常了,关于路径设置:
    1
    2
    3
    chown yourgroup:yourgroup laravel_path(.user.ini可能会影响命令执行,可以先 chattr -i)
    chown www:www -R ./storage
    chown www:www -R ./bootstrap/cache