lnmp1.5 环境下部署 Laravel 项目的问题总结
一、服务器运行环境
- centos7.4 64位
- lnmp1.5(php 7.2.6 ,mysql5.7)
二、Laravel项目
- laravel5.5
- 支付宝手机网站支付SDK
- 验证码类(gregwar/captcha": "1.*)
- ......
三、问题点
利用lnmp vhost add 创建虚拟主机并配置路径和域名信息后,访问项目,显示500
- Laravel项目需要对目录 storage/, bootstrap/cache, public/赋予读写权限
//赋予三个目录读写权限 chmod o+rwx storage/ -R chmod o+rwx bootstrap/cache/ -R chmod o+rwx public/ -R
2.用 lnmp vhost add 命令 添加的虚拟域名会在根目录生成 .user.ini,这个.user.ini不删除会一直报500错误
//在虚拟主机指定的目录里执行 chattr -i .user.ini //去掉文件保护 rm .user.ini //删除文件 //注释掉fastcgi.conf文件的最后一行 # fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";
项目只有首页才能访问
- nginx接到请求后先判断是否是静态资源文件或目录,如果不是默认处理是指向404,需要改成返回动态处理
//该域名下的配置文件或虚拟主机配置文件添加 location / { try_files $uri $uri/ /index.php?$query_string; }
支付宝SDK和验证码扩展包纷纷报错
- PHP升级到7.2的版本更新问题,参见: https://mp.weixin.qq.com/s/60pohj2n7Pxba3G9vY92yg
//each函数已被废弃(支付宝SDK的apoClient文件343行用了each,改成foreach即可) while (list ($key, $val) = each ($para_temp)) { //修改成 foreach($para_temp){ //当传递一个无效参数时,count()函数将抛出warning警告:(验证码扩展用的版本比较低,很多这种写法) //更新到最新版本(引出composer的两个问题) composer install gregwar/captcha": "dev-master ...
lnmp1.5自带composer1.7.2,但是执行composer require的时候显示报错
- 执行 composer require 报错[ErrorException]proc_get_status() has been disabled for security reasons
//从报错可以看出是关闭了PHP的 proc_get_status()函数 //打开php.ini文件,搜索 proc_get_status(),删除该函数,关闭禁用 disable_functions=passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_get_status,proc_open,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server //二次报错[Symfony\Component\Process\Exception\RuntimeException] The Process class relies on proc_open,同理.搜索proc_open,删除该函数,关闭禁用
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: