解決使用寶塔安裝的swoole擴展,運行項目出現的3個常見問題


前言:

    常常做東西的時候最不願搭環境了,所以如果只是用於學習或者一些小項目,我都會選擇在服務器上使用寶塔面板。自然swoole也是直接用BT的方式安裝,但是呢,最近我寫的一個雙人對戰的五子棋小游戲,在我本機虛擬機上能正常運行。放到之前已經裝好swoole的服務器上時(寶塔面板安裝的),卻接連報錯。

 

問題一 :

    那個五子棋聯機小游戲的后台使用的是easyswoole,所以我測試性的啟動一下。php easyswoole start,卻出現 PHP Warning: Module 'swoole' already loaded in Unknown on line 0,重啟php fpm也是報這個錯。

    根據信息提示,就是swoole擴展已經加載過。所以可能就是php.ini文件中多出了一個extension=swoole.so,所以把多的注釋或者直接刪掉,最好重啟一下php就沒有這個錯誤了。

 

問題二:

    php啟動是沒問題了,通過命令php -m | less查看PHP安裝的擴展中也有swoole。但是銅通過php easyswoole start啟動時,又報了一個新的錯誤。Swoole\Process::__construct() expects at most 3 parameters, 4 given。 錯誤也指出了文件錯誤的詳細地方,提示是說那個類的構造函數應該是傳3個參數,但是現在卻傳了4個。

    我又回到我虛擬機的環境里的代碼,發現沒什么異常。導致這種原因的那肯定就是搭建的環境中某個軟件的版本原因,首先我先懷疑PHP版本,在我認真比對下,PHP版本一致。后來再看了一下錯誤,錯誤的根據是一個swoole的函數報錯的。所以這肯定是swoole版本原因,可能是舊版本函數某個參數被去掉了。於是我通過命令查看了swoole版本,php --ri swoole

     果然,我之前的是4.5版本,而現在寶塔上的這個是2.2。所以我就去網上找了很多寶塔升級swoole版本的方法,確實也有很多。試過了一兩個后沒起效果,於是我把swoole刪掉,重新再裝一遍。這次我沒有按順序,而是先裝swoole4, 然后再裝的swoole。最后查看版本竟然成功變成了4.5

 

問題三:

    php easyswoole start啟動也沒有報錯了,於是我就打開了游戲頁面。發現兩個玩家全都連接不上服務器,單獨將ws服務地址請求也連接失敗。在放行的寶塔上ws服務端口也顯示在使用,那這個是什么原因呢。

   折騰了一陣后,我才想起來阿里雲的服務器也有一個安全組配置。所以肯定是那個端口是被阿里雲的系統攔住了,只要找到安全組添加一個入站規則然后加上端口。最后重啟es,打開游戲頁面,可以正常運行了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM