[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-devopsdebian與ubuntu從php7升級到php8":3},{"id":4,"slug":5,"title":6,"description":7,"content":8,"date":9,"image":10,"imageAlt":6,"author":11,"categories":14,"path":18,"minRead":19},162,"devopsdebian與ubuntu從php7升級到php8","[DevOps]Debian與Ubuntu從php7升級到php8","Debian與Ubuntu從php7升級到php8 因為php7.4將於2022年年底停止安全性更新，因此手上 […]","\u003Ch1>Debian與Ubuntu從php7升級到php8\u003C\u002Fh1>\n\u003Cp>因為php7.4將於2022年年底停止安全性更新，因此手上有些專案必須跟著升級，這邊紀錄升級的過程。主要參考於這篇\u003Ca href=\"https:\u002F\u002Fphp.watch\u002Farticles\u002Fphp-8.0-installation-update-guide-debian-ubuntu\" title=\"文章\">文章\u003C\u002Fa>，我就順便做繁中化整理。若有錯誤請再留言告知。我是使用Debian版本，已經順利完成升級。\u003C\u002Fp>\n\u003Chr \u002F>\n\u003Ch3>How to install\u002Fupdate PHP 8.0 (Debian\u002FUbuntu)\u003C\u002Fh3>\n\u003Ch3>如何安裝\u002F升級PHP 8.0(Debian\u002FUbuntu)\u003C\u002Fh3>\n\u003Ch4>PHP 8.0中的擴充與相依更動\u003C\u002Fh4>\n\u003Col>\n\u003Cli>預設具備JSON擴充，不需要再安裝php-json就可以使用。\u003C\u002Fli>\n\u003Cli>xmlrpc擴充轉移至PECL，PHP8.0中不再具備名為xmlrpc的擴充。\u003C\u002Fli>\n\u003Cli>GD擴充在Windows中從php_gd2.dll更改為php_gd.dll\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch4>PHP 8.0中的INI更動。\u003C\u002Fh4>\n\u003Col>\n\u003Cli>\n\u003Cp>Assertions throw exceptions by default - (assert.exception=1)\u003Cbr \u002F>\n預設狀態下斷言會丟出意外判斷。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Default error display is set to E_ALL - (error_reporting=-1)\u003Cbr \u002F>\n預設錯誤顯示設定於E_ALL。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Startup errors are displayed by default - (display_startup_errors=1)\u003Cbr \u002F>\n預設狀態下，會顯示啟動錯誤。\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>PHP 8.0新的JIT添加了幾個新的 INI 指令。\u003Cbr \u002F>\n\u003Cstrong>zend.exception_string_param_max_len INI \u003C\u002Fstrong>設定用於可設定的異常堆疊(stack)來追蹤字符串長度\u003C\u002Fp>\n\u003Ch4>安裝\u002F升級步驟\u003C\u002Fh4>\n\u003Ch5>1.列出現在的PHP套件(packages)\u003C\u002Fh5>\n\u003Cp>主要是從目前的套件清單直接做參考升級。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>dpkg -l | grep php | tee packages.txt\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch5>2.加入 ondrej\u002Fphp PPA\u003C\u002Fh5>\n\u003Cp>這邊會為PPA新增套件的來源，包含所有PHP套件以及相依項目，例如argon2和libzip。\u003C\u002Fp>\n\u003Cp>Ubuntu\u003C\u002Fp>\n\u003Cpre>\u003Ccode>sudo add-apt-repository ppa:ondrej\u002Fphp # Press enter when prompted.\nsudo apt-get update\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Debian\u003C\u002Fp>\n\u003Cpre>\u003Ccode>sudo apt install apt-transport-https lsb-release ca-certificates wget -y\nsudo wget -O \u002Fetc\u002Fapt\u002Ftrusted.gpg.d\u002Fphp.gpg https:\u002F\u002Fpackages.sury.org\u002Fphp\u002Fapt.gpg \nsudo sh -c &#039;echo &quot;deb https:\u002F\u002Fpackages.sury.org\u002Fphp\u002F $(lsb_release -sc) main&quot; &gt; \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fphp.list&#039;\nsudo apt update\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch5>3.安裝PHP8.0擴充\u003C\u002Fh5>\n\u003Cp>所有PHP8.0的套件都遵循php8.0-NAME 命名模式。這邊將安裝數個根據php8.0-common的擴充以及用於PHP 8.0的CLI。\u003C\u002Fp>\n\u003Cp>使用CLI安装PHP 8.0\u003C\u002Fp>\n\u003Cpre>\u003Ccode>sudo apt install php8.0-common php8.0-cli -y\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>這時可以確認版本，注意，如果是升級的話應該還是原版本\u003C\u002Fp>\n\u003Cpre>\u003Ccode>php -v # Show PHP version.\nphp -m # Show PHP modules loaded.\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch5>其他擴充\u003C\u002Fh5>\n\u003Cp>這時可以安裝其他擴充，但我沒做這段，例如\u003C\u002Fp>\n\u003Cpre>\u003Ccode>sudo apt install php8.0-{bz2,curl,intl,mysql,readline,xml}\nsudo apt install php8.0-pcov # PCOV code coverage tool\nsudo apt install php8.0-xdebug # Xdebug debugger\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch5>安裝伺服器API\u003C\u002Fh5>\n\u003Cp>根據所使用的Web伺服器，需要安裝其他套件與伺服器整合。\u003C\u002Fp>\n\u003Cp>如果是Apache使用mpm_event、Nginx，  Litespeed，可以使用php8.0-fpm \u003C\u002Fp>\n\u003Cpre>\u003Ccode>sudo apt install php8.0-fpm\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>如果是Apache使用 mod_php，則安裝 libapache2-mod-php8.0。\u003C\u002Fp>\n\u003Cpre>\u003Ccode>sudo apt install libapache2-mod-php8.0\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch5>4.測試PHP8.0的安裝\u003C\u002Fh5>\n\u003Cp>測試一下剛剛的安裝結果，如果是升級的話應該還是原版本\u003C\u002Fp>\n\u003Cpre>\u003Ccode>php -v\nphp -m\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode># php -v\nPHP 8.0.0-dev (cli) (built: Oct 4 2020 14:04:36) ( NTS )\nCopyright (c) The PHP Group\nZend Engine v4.0.0-dev, Copyright (c) Zend Technologies\n\n# php -m\n[PHP Modules]\nCore\nctype\ncurl\n...\n..\n.\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch5>5.清除舊的PHP版本\u003C\u002Fh5>\n\u003Cp>這時可以看看主機內有安裝的PHP環境\u003C\u002Fp>\n\u003Cpre>\u003Ccode>sudo update-alternatives --config php\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode>There are 2 choices for the alternative php (providing \u002Fusr\u002Fbin\u002Fphp).\nSelection Path Priority Status\n\n------------------------------------------------------------\n\n* 0 \u002Fusr\u002Fbin\u002Fphp8.0 80 auto mode\n1 \u002Fusr\u002Fbin\u002Fphp7.4 74 manual mode\n2 \u002Fusr\u002Fbin\u002Fphp8.0 80 manual mode\n\nPress to keep the current choice[*], or type selection number:\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>如果舊版為PHP7.4\u003C\u002Fp>\n\u003Cpre>\u003Ccode>sudo apt purge &#039;^php7.4.*&#039;\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch5>6.重開機\u003C\u002Fh5>\n\u003Cp>對，記得重開伺服器\u003C\u002Fp>\n\u003Cpre>\u003Ccode>reboot\u003C\u002Fcode>\u003C\u002Fpre>\n","2022-11-04T10:00:43","",{"name":12,"link":13},"Chih Fan","http:\u002F\u002Fpost.billxu.net",[15],{"name":16,"slug":17},"Devops","devops","\u002Fblog\u002Fdevopsdebian與ubuntu從php7升級到php8",2]