lnmp1.5 環境下部署 Laravel 專案的問題總結

淺安時光發表於2018-10-11

一、伺服器執行環境

  • 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,刪除該函式,關閉禁用
本作品採用《CC 協議》,轉載必須註明作者和本文連結
hmlSunShine

相關文章