溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Php升級Php 7.4會遇到的兩個大坑

發(fā)布時間:2020-04-29 09:48:38 來源:億速云 閱讀:451 作者:小新 欄目:編程語言

今天小編給大家分享的是Php升級Php 7.4會遇到的兩個大坑,相信很多人都不太了解,為了讓大家更加了解Php 7.4,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。一定會有所收獲的哦。

由于我機(jī)器用的滾動更新的Archlinux,不知不覺Php已經(jīng)升級到7.4了,沒想到這次更新帶來了極大的麻煩。首先是Php-fpm的新選項(xiàng)ProtectHome會導(dǎo)致經(jīng)典的File not found錯誤,再是Php解釋器會對null類型的下標(biāo)訪問直接報(bào)錯Trying to access array offset on value of type null。

最近在幫一個朋友張羅一個網(wǎng)站,于是把線上代碼拉回本地做鏡像進(jìn)行測試。因?yàn)閣eb應(yīng)用有些奇怪的依賴,為了不污染本機(jī)的環(huán)境,我就把它部署在Docker中進(jìn)行測試。Docker的基礎(chǔ)鏡像選擇了激進(jìn)的Archlinux,搭配上個月底才出爐的Php7.4。于是花了整整一個下午栽在Debug大坑中…

Php升級Php 7.4會遇到的兩個大坑

首先是一把梭配好了環(huán)境后,一跑,報(bào)了Php-fpm最經(jīng)典也是最坑的錯誤之一:File not found。配過Php-fpm的都知道出現(xiàn)這個錯誤一般是文件權(quán)限不對或者文件路徑不對,而這兩個錯誤都是比較難找的。于是我又雙叒叕體驗(yàn)了一把大眼瞪小眼的路徑檢查,沒問題。文件權(quán)限檢查,emmm也沒問題呀?又返回去檢查路徑,還是沒問題!搞到最后氣的chmod 777一把梭竟然也沒能解決問題,有點(diǎn)懷疑人生…

網(wǎng)上搜索Php-fpm的File not found錯誤,雖然結(jié)果很多,可原因都只有這兩個。而這兩個原因也都被一一排除了,事情突然向神奇的角度發(fā)展起來了...

不知過了多久之后我才想到可能是跟Php版本有關(guān)(因?yàn)槲冶緳C(jī)也跑了其它Php應(yīng)用,所以一開始并不覺得Php有問題)。于是我去搜了一下新版Php7.4及Php-fpm7.4的改動,一下就發(fā)現(xiàn)了罪魁禍?zhǔn)祝?/p>

Php7.4 Commit

(https://github.com/php/php-src/commit/40c4d7f1820df1872a71ab07fd26da45a203e37f#diff-c0605c0e7e1db864472acf66a9812d33R22)

這個提交中添加了一個選項(xiàng):ProtectHome。顧名思義,開啟了之后php不會去執(zhí)行在家目錄中的文件——而這個新選項(xiàng)的默認(rèn)值恰好是開啟的。使用systemctl edit php-fpm.service添加一個選項(xiàng)覆蓋,重啟服務(wù)后,終于一切正常,并迎來第二個大坑錯誤:

Php中經(jīng)常使用inlcude,require等來包含其它文件。而調(diào)試發(fā)現(xiàn)在某個include之后,php直接停止執(zhí)行并報(bào)錯Trying to access array offset on value of type null。但是在線上的代碼跑起來卻一點(diǎn)問題也沒有,這就很奇怪了,跟到include的文件中之后發(fā)現(xiàn)是有個地方在訪問數(shù)組元素,而數(shù)組本身卻是null。在Php這種弱類型語言中這種語法一般是支持的,它會整體返回null,而在新版的Php7.4中這個語法卻會報(bào)告為錯誤。看來Php也在一點(diǎn)點(diǎn)規(guī)范語言的特性,沒辦法,這個只能自己改代碼了。(雖然我目前選擇了使用舊版本的Php)

由于Php7.4在也發(fā)布不久,估計(jì)還沒有大面積更新使用,各個應(yīng)用的開發(fā)者可能也沒有針對Php7.4進(jìn)行過測試和兼容修改。也正是因此,在網(wǎng)上搜索這些信息時,找不到什么有價(jià)值的建議,這篇文章除了記錄下被這個新特性坑了一下午之外,也算給其它人留一個解決類似問題的思路吧。

關(guān)于Php升級Php 7.4會遇到的兩個大坑就分享到這里了,希望以上內(nèi)容可以對大家有一定的參考價(jià)值,可以學(xué)以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI