为了方便节省时间, 现在都是使用lnmp一键安装包搭建LNMP环境的. 今天恰好有个用Laravel开发的项目, 部署完一直500错误, 百思不得其解... 谷歌了一番, 记下来备用嘿嘿~

首先处理一下目录权限:

chmod -R 777 bootstrap/
chmod -R 777 storage/

再确认一下是否是open_basedir的问题, 方法是修改php.ini, 打开PHP的错误显示:

vim /usr/local/php/etc/php.ini
display_errors = On

改完php.ini要重启一下:

lnmp php-fpm restart

刷新页面, 如果有类似下面的错误:

Warning: require(): open_basedir restriction in effect. File(/home/wwwroot/***/bootstrap/autoload.php) is not within the allowed path(s): (/home/wwwroot/***/public/:/tmp/:/proc/) in /home/wwwroot/***/public/index.php on line 22

Warning: require(/home/wwwroot/***/bootstrap/autoload.php): failed to open stream: Operation not permitted in /home/wwwroot/***/public/index.php on line 22

Fatal error: require(): Failed opening required '/home/wwwroot/***/public/../bootstrap/autoload.php' (include_path='.:/usr/local/php/lib/php') in /home/wwwroot/***/public/index.php on line 22

打开/usr/local/nginx/conf/fastcgi.conf, 注释PHP_ADMIN_VALUE配置(最前面加个#号):

vim /usr/local/nginx/conf/fastcgi.conf
#fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";

最后重启一下就可以了, 当然php.ini得先改回去:

vim /usr/local/php/etc/php.ini
display_errors = Off
lnmp restart

还有.user.ini这个文件, 移动或者删除之前, 需要先执行下面的命令:

chattr -i .user.ini

我部署时是直接把它删了, 如果需要的话, 放在public目录下, 文件内容根据实际路径修改, 这里做个示例:

open_basedir=/home/wwwroot/www.abc.com/:/tmp/:/proc/

OK, 就写到这里~睡觉~

暂无评论