前一陣子在部署Wordpress的時候沒仔細看,預設是安裝php 7.2,在控制台提醒才發現裝錯版本,但就先擺著,這幾天沒甚麼事,來更新一下php版本
其實php 7.2在使用上沒有甚麼影響,只是php 8支援了更多的語法、在安全性及效能都有提升,而官方也有明確記載了作業環境建議為php 7.4以上
目前我用的是aarch64的Oracle Linux 8,搭配Apache,進行更新,基本上與RHEL 8及CentOS 8作法相同。
首先,使用你個人喜好的Terminal SSH進Linux
安裝、更新、移除package前,先update packages
$sudo yum update -y
要移除舊有的php版本前,先停止php service
$sudo systemctl stop php-fpm
接下來要移除舊有的php版本,先找出目前php相依的套件
$rpm -qa | grep php
會列出所有php 7.2相依的套件
php-opcache-7.2.13-3.module+el8.6.0+20694+4397942f.aarch64
php-intl-7.2.13-3.module+el8.6.0+20694+4397942f.aarch64
php-pear-1.10.13-1.module+el8.6.0+20568+84712317.noarch
php-mysqlnd-7.2.13-3.module+el8.6.0+20694+4397942f.aarch64
php-fpm-7.2.13-3.module+el8.6.0+20694+4397942f.aarch64
php-pecl-zip-1.19.2-1.module+el8.6.0+20568+84712317.aarch64
php-devel-7.2.13-3.module+el8.6.0+20694+4397942f.aarch64
php-pdo-7.2.13-3.module+el8.6.0+20694+4397942f.aarch64
php-process-7.2.13-3.module+el8.6.0+20694+4397942f.aarch64
php-7.2.13-3.module+el8.6.0+20694+4397942f.aarch64
php-gd-7.2.13-3.module+el8.6.0+20694+4397942f.aarch64
php-mbstring-7.2.13-3.module+el8.6.0+20694+4397942f.aarch64
php-cli-7.2.13-3.module+el8.6.0+20694+4397942f.aarch64
php-common-7.2.13-3.module+el8.6.0+20694+4397942f.aarch64
php-xml-7.2.13-3.module+el8.6.0+20694+4397942f.aarch64
這個列表所有套件都是以php-為開頭,接著移除所有php-的套件
$sudo yum remove "php-*" -y
如果使用CentOS 8 or RHEL 8
移除完成後首先要下載php 8的rpm
文中所用rpm來自於Oracle Linux的AppStream
$sudo wget https://yum.oracle.com/repo/OracleLinux/OL8/appstream/aarch64/getPackage/php-8.0.13-3.module+el8.6.0+20694+4397942f.aarch64.rpm
執行安裝
$sudo rpm -i php-8.0.13-3.module+el8.6.0+20694+4397942f.aarch64.rpm
如果使用Oracle Linux 8
使用dnf module指令來指定安裝AppStream中的php 8,列出所有php版本
$dnf module list php
其中Stream 7.2 目前為預設安裝版本 [d] 表示為預設,我們使用enable來指定套件和版本
$dnf module reset php
$dnf module enable php:8.0
完成指定之後再看一次list是不是預設為8.0
接著就可以開始安裝php 8了
$sudo dnf install php php-opcache php-gd php-curl php-mysqlnd
完成安裝後設定SELinux,給予Apache權限
$sudo chcon -Rt httpd_sys_rw_content_t /var/www
重啟Apache
$sudo systemctl restart httpd
最後檢查安裝後版本
$php -v
這樣就完成php的更新了
或是使用phpinfo來看
收工!!
reference
How to Install PHP on CentOS 8
CentOS 7 安裝EPEL Repository 入門教學
Oracle Linux 8 (aarch64) AppStream
How to Easily Create and Use a phpinfo Page (In 3 Steps)
How to Upgrade and Downgrade the PHP Versions on CentOS 7.6
[…] 于是我上网找了半天,发现dns_get_record这个函数是php5之后肯定自带的一个函数,那肯定是php有问题了,于是这个时候我就去试了下用rpm包安装php,参考紀錄從PHP 7.2更新至8.0 on Oracle Linux 8 – Sammy Gone Wild完成了,这下可以用这个函数了。 结果宝塔没法管理通过这种方式安装的php,于是回到了原点,我这个时候恰好搜索到有人同样也是使用甲骨文云的ARM服务器安装,遇到一样的报错,虽然他是用甲骨文云搭建的Discuz,他提出的问题被宝塔论坛的工作人员拒绝回答了,说他既然用的aapanel,那就去aapanel那里问,然后我就去了aapanel,果然找到了[他的帖子](arm server, aapanel environment running discuz x3.5 error. – aaPanel – Hosting control panel. One-click LAMP/LEMP.),基于这个帖子我也解决了这个问题,虽然最终还是差了一点点,以下是解决方案。 […]