lnmp1.5 环境下部署 Laravel 项目的问题总结

2019-01-14 13:57:36   PHP

  php   linux   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

用 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 require gregwar/captcha": "dev-master
composer require "mews/captcha:~2.0"

lnmp1.5自带composer1.7.2,但是执行composer require的时候显示报错

执行 composer require 报错[ErrorException]proc_get_status() has been disabled for security reason

//从报错可以看出是关闭了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,删除该函数,关闭禁用