Yii2 顯示 server interval 500 error

前天手欠點了composer的update,結果呼啦呼啦升級了一堆東西,繼續編碼沒遇到問題,就沒當回事。

次日,部署更新到服務器出了問題,報server 500錯誤,也不提示具體原因,懵。。。

拋磚引玉,記錄一下解決方案。

1.先讓服務器顯示錯誤信息,編輯服務器php.ini,找到display_errors,修改爲 display_errors = On,保存,重啓服務

2.運行服務如下顯示

Parse error: syntax error, unexpected 'function' (T_FUNCTION), 
expecting identifier (T_STRING) or \\ (T_NS_SEPARATOR) 
in /data/qisi_class/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php 
on line 5

通常這種語法錯誤,是低版本語言不兼容高版本寫法出現的

3.查看服務器php版本5.4.16,開發環境時7.2.10

4.問題就在這裏,composer升級時按照本機高版本升級的,但服務器運行環境太低不兼容導致出錯

5.服務器是不能隨便升級的,辦法只能是把composer匹配版本降級,修改composer.json,增加下面內容

"config": {
        ***
        "platform": {
            "php": "5.4.16"
        }
    },

這樣composer就可以按照指定的版本匹配依賴包。

6.再次選擇composer的update,開始依賴降級操作

- Downgrading sebastian/recursion-context (3.0.0 => 1.0.5): Downloading 
- Downgrading sebastian/exporter (3.1.0 => 1.2.2): Downloading (connecting...)
- Installing phpunit/phpunit-mock-objects (2.3.8): Downloading (connecting...)

7.因爲本地環境php版本高,向下兼容的,自然不會出錯。坐等降級完成,重新部署服務器問題就解決了。

爲了身心健康,不要隨便點composer update。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章