来源: lnmp+laravel部署到服务器出现 “GET / HTTP/1.1” 500 5 – and大头 – 博客园
lnmp一键安装包直接下载安装,就可以了,在此不多说。
虚拟机配置给个参考(lnmp安装包)
server { listen 80; #listen [::]:80; server_name www.dtcode.cn dtcode.cn; index index.html index.htm index.php default.html default.htm default.php; set $root /home/wwwroot/laravel; root /home/wwwroot/laravel/public; #include other.conf; #error_page 404 /404.html; include enable-php.conf; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index /index.php; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\. { deny all; } access_log /home/wwwlogs/laravel_log.log; }
然后运行出现 500 Internal Server Error ,到这个我就怕了,解决方法
更改 laravel/storage 和 laravel/bootstrap/cache 权限为 777
同时修laravel改项目目录文件全限为 775,所属组 www
chown -R www laravel chmod -R 775 laravel
错误继续出现: chown: changing ownership of `question/public/.user.ini’: Operation not permitted
发现root用户对该文件也没有-x执行权限。通过网上查找才知道,原来该文件被chattr锁定了。这里就了解了一下Linux的chattr和lsattr命令。
这两个命令是用来查看和改变文件目录属性的,和chmod相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。而lsattr命令是显示chattr命令设置的文件属性。所以,这里需要使用chattr命令对.user.ini文件解锁
解决办法,修改项目根目录,.user.ini文件
1.先给.user.ini 可以修改的权限 #chattr -i .user.ini 2.然后修改 # vi .use.ini 3.修改.use.ini内容 open_basedir=/home/wwwroot/default/laravel/public:/tmp/:/proc/ 改为 open_basedir=/home/wwwroot/default/laravel/:/tmp/:/proc/ 4.最后更改.user.ini权限为不能修改 #chattr +i .user.ini