子方有话
最近,陆子方是第一次接触laravel这个框架,以前只是知道有这么一个东西,经过这几天的学习,大概了解了一些内容。今天,陆子方就讲一下陆子方在部署工作时,页面报500错误的问题。
问题核心
1、权限正确。比如设置 storage 目录权限为 777,当然真正跑起来之后可以降低文件权限。
chmod -R 0777 storage
2、防跨站。陆子方其实就是在这里栽的跟头,陆子方使用的是lnmp一键包搭建的环境,即使陆子方已经把运行目路修改为public,也无法正常打开站点。其实这个就是防跨站出的问题。因此要把防跨站关闭。
处理说明
lnmp一键包在创建站点时,会在站点跟目录创建一个.user.ini文件,它控制着访问权限。而laravel是需要从二级目录进行访问的,因此就出现了错误。移除方法就不多说了,可以按这里来,移除后就可以正常访问了。
在Thinkphp、codeigniter、Laravel等框架下,网站目录一般是在public下,但是public下的程序要跨目录调用public上级目录下的文件,因为LNMP默认是不允许跨目录访问的,所以都是必须要将防跨目录访问的设置去掉,有时候这些框架类的程序提示500错误也可能是这个问题引起的。
【lnmp1.6】删除网站目录下.user.ini无法删除,防跨目录设置设置教程
进一步思考
网站是可以访问了,但安全成为陆子方首先考虑的问题。删除文件后,这也就意味着出现跨站访问服务器的可能性,这个安全漏洞需要补上的。
下面是陆子方在别的地方找到的,可能不够严谨,可以在站点的conf文件中添加以下内容,进行防跨站处理。
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; }