記一次PHP的Invalid binding type問題

tankII發表於2021-09-09

首先說明下環境問題,新舊伺服器的遷移。程式碼在老伺服器執行沒有任何問題。環境都是PHP7.3,結果新的伺服器上流量導過來以後,就報出瞭如下問題:

FastCGI sent in stderr: "PHP message: PHP Fatal error:  Invalid binding type in /base.inc.php on line 221

這個base.inc.php的第221行是什麼東東呢?

221 }

額,這就有點詭異了。註釋掉相關的方法後,報錯資訊又順延到下一個花括號的結尾處了。這就神奇了。於是去百度谷歌了半天,並沒有什麼有用的資料,唯一一個提到的內容是說重新編譯一下PHP。

stackoverflow.com/questions/3960323/why-dont-php-attributes-allow-functions

好吧,我們們就重新編譯,可是編譯完了一旦導流過來,馬上就又掛掉。PHP-FPM正常執行,但不是所有的都會出問題,於是測試訪問的時候是有的可以有的報錯的。再深入對比發現,新伺服器為了將來的擴充套件我們安裝了swoole擴充套件。可能問題就出在這裡,馬上刪掉swoole擴充套件,問題解決。

在swoole官網也並沒有找到相關的資訊。預估可能是程式碼中或者在PHP-FPM的配置中有和swoole不相容的地方。所以在執行的過程中沒有流量的時候正常測試不會有影響,但流量較大的情況下就會產生這種錯誤。有的時候很多程式碼看似執行沒毛病,但真正的問題往往還是要在大流量高併發的場景下才能體現出來。

===============

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1795/viewspace-2827040/,如需轉載,請註明出處,否則將追究法律責任。

相關文章