一、伺服器執行環境
- 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 協議》,轉載必須註明作者和本文連結