Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
在解決問題之道上不斷前行
因為php7.4將於2022年年底停止安全性更新,因此手上有些專案必須跟著升級,這邊紀錄升級的過程。主要參考於這篇文章,我就順便做繁中化整理。若有錯誤請再留言告知。我是使用Debian版本,已經順利完成升級。
Assertions throw exceptions by default - (assert.exception=1)
預設狀態下斷言會丟出意外判斷。
Default error display is set to E_ALL - (error_reporting=-1)
預設錯誤顯示設定於E_ALL。
Startup errors are displayed by default - (display_startup_errors=1)
預設狀態下,會顯示啟動錯誤。
PHP 8.0新的JIT添加了幾個新的 INI 指令。
zend.exception_string_param_max_len INI 設定用於可設定的異常堆疊(stack)來追蹤字符串長度
主要是從目前的套件清單直接做參考升級。
dpkg -l | grep php | tee packages.txt
這邊會為PPA新增套件的來源,包含所有PHP套件以及相依項目,例如argon2和libzip。
Ubuntu
sudo add-apt-repository ppa:ondrej/php # Press enter when prompted.
sudo apt-get update
Debian
sudo apt install apt-transport-https lsb-release ca-certificates wget -y
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
所有PHP8.0的套件都遵循php8.0-NAME 命名模式。這邊將安裝數個根據php8.0-common的擴充以及用於PHP 8.0的CLI。
使用CLI安装PHP 8.0
sudo apt install php8.0-common php8.0-cli -y
這時可以確認版本,注意,如果是升級的話應該還是原版本
php -v # Show PHP version.
php -m # Show PHP modules loaded.
這時可以安裝其他擴充,但我沒做這段,例如
sudo apt install php8.0-{bz2,curl,intl,mysql,readline,xml}
sudo apt install php8.0-pcov # PCOV code coverage tool
sudo apt install php8.0-xdebug # Xdebug debugger
根據所使用的Web伺服器,需要安裝其他套件與伺服器整合。
如果是Apache使用mpm_event、Nginx, Litespeed,可以使用php8.0-fpm
sudo apt install php8.0-fpm
如果是Apache使用 mod_php,則安裝 libapache2-mod-php8.0。
sudo apt install libapache2-mod-php8.0
測試一下剛剛的安裝結果,如果是升級的話應該還是原版本
php -v
php -m
# php -v
PHP 8.0.0-dev (cli) (built: Oct 4 2020 14:04:36) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
# php -m
[PHP Modules]
Core
ctype
curl
...
..
.
這時可以看看主機內有安裝的PHP環境
sudo update-alternatives --config php
There are 2 choices for the alternative php (providing /usr/bin/php).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/php8.0 80 auto mode
1 /usr/bin/php7.4 74 manual mode
2 /usr/bin/php8.0 80 manual mode
Press to keep the current choice[*], or type selection number:
如果舊版為PHP7.4
sudo apt purge '^php7.4.*'
對,記得重開伺服器
reboot