更多

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

  1. 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/";

项目只有首页才能访问

  1. nginx接到请求后先判断是否是静态资源文件或目录,如果不是默认处理是指向404,需要改成返回动态处理
//该域名下的配置文件或虚拟主机配置文件添加
location / {
        try_files $uri $uri/ /index.php?$query_string;
}

支付宝SDK和验证码扩展包纷纷报错

  1. 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的时候显示报错

  1. 执行 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,删除该函数,关闭禁用

hmlSunShine博客
请先登录后发表评论
  • 最新评论
  • 总共1条评论
hmlSunShine博客

hmlSunshine:不错呦!

2018-12-12 22:18:08 回复

hmlSunShine博客
  • hmlSunshine 回复 hmlSunshine:是的
  • 2018-12-13 10:51:21 回复
hmlSunShine博客
  • 左岸 回复 hmlSunshine:三级回复
  • 2018-12-13 10:52:21 回复