LibreNMS 自 2019 二月起,由於 PHP 自己都已經放棄對 5.6 與 7.0 版的支援,因此 LibreNMS 開始要求使用者必須把 PHP 版本更新到 7.1 以上,這表示我原本 PHP 7.0 版也需要進行更新。在沒有更新至 7.1 以上前,LibreNMS 的更新將無法繼續。
更新 PHP 版本
我的作業系統發行版本是 Ubuntu 16.04,要更新 PHP 至 7.2 時需要做點手工。
Ubuntu 準備更新至 PHP 7.2
sudo add-apt-repository ppa:ondrej/php sudo apt update
Debian 準備更新至 PHP 7.2
sudo apt install apt-transport-https lsb-release ca-certificates sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' sudo apt update
更新完成後,請繼續安裝相關套件,您缺少的不一定會跟我這邊呈現的一樣,但可依此執行。
安裝 PHP 擴充套件
apt install php7.2 php7.2-common php7.2-cli php7.2-fpm apt install php7.2-mysqlnd apt install php7.2-mbstring apt install php7.2-xml apt install php7.2-curl apt install php7.2-gd apt install php7.2-zip
更新 LibreNMS 版本
接下來,即可以 daily.sh 將 LibreNMS 進行更新。
不過我的情況是更新完成後,開啟網頁會產生 http 500 錯誤,查看 Librenms 的 log 發現以下訊息:
登入 LibreNMS 錯誤
2019/02/13 10:20:29 [error] 7983#7983: *74 FastCGI sent in stderr: " PHP message: PHP Parse error: syntax error, unexpected '=' in /opt/librenms/vendor/laravel/framework/src/Illuminate/Support/Arr.php on line 388" while reading response header from upstream, client: 123.123.123.123, server: xxx.xxx.com.tw, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.0-fpm.sock:", host: "xxx.xxx.xxx.tw"
問題是出在 PHP 更新版本以後,原本 php7.x-fpm.sock 的位置已經不同,現在更完成的服務所執行是 7.2,我們可以用指令確認一下服務。
查看 php-fpm 服務狀態
service php7.2-fpm status
依據狀態中顯示的 php7.2-fpm 設定檔位置,前往查看內容。
查看 php7.2-fpm 服務狀態
接著依據 php-fpm.conf 設定檔,內容再追往 pool.d/ 下的設定檔查看。
查看 php-fpm.conf 設定
查看 pool.d/*.conf 設定
來到這裡確認了新版 php7.2 的 .sock 檔名已經改變,成為 /run/php/php7.2-fpm.sock。
修正 LibreNMS Web 設定
既然已經知道問題,即可對症下藥,首先開啟 /etc/nginx/conf.d/librenms.conf 這個設定檔,若您是 apache,請開啟相對應的設定檔即可。
開啟後,找到 php-fpm 的相關設定處。
修改 LibreNMS Web 設定
將上圖中原本為 php7.0-fpm.sock 修改為 php7.2-fpm.sock,存檔離開後重新啟動 nginx / apache 服務,即可生效。
結論
LibreNMS 更新頻繁,當出現錯誤時切莫驚慌,通常會在 Web 介面出錯時同時顯示解決方案。若是比較嚴重連 Web 都無法出來的情況,來到 Log 檔中也會顯示相關線索,讓我們能夠以此為引,找到解決問題的方法。
同時提醒,更新至 PHP 7.2 以後,原本如有設定過 PHP 時區者,仍然需要重新修改 php.ini 一次。
LibreNMS 更新頻繁,當出現錯誤時切莫驚慌,通常會在 Web 介面出錯時同時顯示解決方案。若是比較嚴重連 Web 都無法出來的情況,來到 Log 檔中也會顯示相關線索,讓我們能夠以此為引,找到解決問題的方法。
同時提醒,更新至 PHP 7.2 以後,原本如有設定過 PHP 時區者,仍然需要重新修改 php.ini 一次。
參考資料
- Change to PHP minimum version >= 7.1 - Announcements - LibreNMS Community
https://community.librenms.org/t/change-to-php-minimum-version-7-1/6632
- Upgrade/Install to PHP 7.2 - Ubuntu & Debian | Ayesh Karunaratne
https://ayesh.me/Ubuntu-PHP-7.2