使用lnmp后遇到的奇怪问题解决
今天想把一个项目从本地迁移到服务器上,使用的是 laravel5.4+php7.0 ,在本地运行的时候由于偷懒一直是使用的php -S 0.0.0.0:1024 调试,一路下来相安无事。
在搬到服务器上时,安装了 lnmp1.4 , 系统是 Ubuntu 14.04.5 LTS ,架设好了一看,HTTP500,先排除一下是不是nginx的问题:访问根目录下的robot.txt,成功!
那么就只能看看nginx_error.log了。
nginx_error.log部分日志如下
PHP message: PHP Fatal error: require(): Failed opening required '/home/wwwroot/default/atsys/public/../bootstrap/autoload.php' (include_path='.:/usr/local/php/lib/php') in /home/wwwroot/default/atsys/public/index.php on line 22" while reading response header from upstream, client:, server: atsys.must.plus, request: "POST / HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-cgi.sock:", host: ""
2017/08/15 19:40:46 [error] 22857#0: *271 FastCGI sent in stderr: "PHP message: PHP Warning: require(): open_basedir restriction in effect. File(/home/wwwroot/default/atsys/bootstrap/autoload.php) is not within the allowed path(s): (/home/wwwroot/default/atsys/public/:/tmp/:/proc/) in /home/wwwroot/default/atsys/public/index.php on line 22
PHP message: PHP Warning: require(/home/wwwroot/default/atsys/bootstrap/autoload.php): failed to open stream: Operation not permitted in /home/wwwroot/default/atsys/public/index.php on line 22
咦,是找不到依赖,那么先来更新一下composer看看:
composer update --no-script
composer install
然后再改一下相关权限:
sudo gpasswd -a www-data deploy
sudo chown www-data:deploy /storage/logs/laravel.log
sudo chown root:deploy -h /.env
sudo chown www-data:deploy -R /bootstrap
php artisan key:generate
php artisan cache:clear
php artisan clear-compiled
sudo chmod -R 777 <laravel_directory>/storage
sudo chmod -R 775 <laravel_directory>/bootstrap
composer dump-autoload
php artisan optimize
sudo apt-get install php-tokenizer
sudo apt-get install php-mbstring
sudo apt-get install php-openssl
sudo systemctl restart php-fpm
改完之后重启,还是不行。
我就在这里搜索了一个下午的资料,包括
1.更改php.ini的open_basedir 为NULL
结果:无效
2.更改nginx.conf
location / {
try_files $uri $uri/ /index.php?$query_string;
}
结果:无效
最后我才发现,原来lnmp自带一个user.ini 里面含有open_basedir,删除即可:
chattr -i /.user.ini
rm .user.ini
问题解决。

浙公网安备 33010602011771号