In this tutorial we’ll install most awaited php version in CWP control panel as php switcher. This easy guide will guide you upon how to install PHP 8 easily.
PHP 8.3 comes with numerous improvements and new features such as:
Typed Class Constants
Added json_validate function
Dynamic class constant and Enum member fetch support
class_alias() supports aliasing built-in PHP classes
New #[\Override] attribute
New stream_context_set_options function
PHP CLI Lint (php -l) supports linting multiple files at once
Fallback value support for PHP INI Environment Variable syntax
Random extension: New \Random\Randomizer::getFloat() and nextFloat() methods
Random extension: New \Random\Randomizer::getBytesFromString method
gc_status() returns additional GC information
PHP 8.3 will not support your current php scripts/cms/themes. Check before shifting to php 8.3., Latest version of WordPress works great with it also check the theme and plugin support by the devs.
Step 1 :
Building files which are required to compile php 8.3
Centos 7/el7 :
yum install oniguruma oniguruma-devel gcc make gcc-c++ cpp kernel-headers.x86_64 libxml2-devel openssl-devel bzip2-devel libjpeg-devel libpng-devel freetype-devel openldap-devel postgresql-devel aspell-devel net-snmp-devel libxslt-devel libc-client-devel libicu-devel gmp-devel curl-devel libmcrypt-devel pcre-devel sqlite-devel db4-devel enchant-devel libXpm-devel mysql-devel readline-devel libedit-devel recode-devel libtidy-devel libtool-ltdl-devel libwebp libwebp-devel expat expat-devel libargon2 libargon2-devel
Centos 8/stream/el8 :
yum install oniguruma oniguruma-devel gcc make gcc-c++ cpp kernel-headers.x86_64 libxml2-devel openssl-devel bzip2-devel libjpeg-devel libpng-devel freetype-devel openldap-devel postgresql-devel aspell-devel net-snmp-devel libxslt-devel libc-client-devel libicu-devel gmp-devel curl-devel libmcrypt-devel pcre-devel sqlite-devel libdb-devel enchant-devel libXpm-devel mysql-devel readline-devel libedit-devel recode-devel libtidy-devel libtool-ltdl-devel libwebp libwebp-devel expat expat-devel libmemcached libmemcached-devel libargon2 libargon2-devel
Now we’ll build libzip and pcre2 :
Install EPEL :
yum install epel-release
Then install some more dependencies and remove the libzip package :
Centos 7 :
rpm -e --nodeps libzip libzip-devel
yum -y install cmake3 cmake zlib-devel --enablerepo=epel
Centos 8 :
rpm -e --nodeps libzip libzip-devel
yum install cmake zlib-devel
ln -s /usr/bin/cmake /usr/bin/cmake3
Installing Latest version Libzip from source :
cd /usr/local/src
rm -rf libzip*
wget https://github.com/mysterydata/md-disk/raw/main/libzip-1.10.0.tar.gz
tar zxvf libzip*
## for centos 7 :
cd libzip*
## for centos 8 :
cd libzip*/
mkdir build
cd build
/usr/bin/cmake3 ..
make && make install
Installing Latest version pcre2 from source :
cd /usr/local/src
rm -rf pcre2*
wget https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.42/pcre2-10.42.zip -O pcre2.zip
unzip pcre2.zip
## for centos 7 :
cd pcre2-*
## for centos 8 :
cd pcre2-*/
./configure
make && make install
Install Latest libavif for new AVIF GD image support:
cd /usr/local/src
rm -rf master* libavif-* build-dir
wget https://github.com/mysterydata/md-disk/raw/main/libavif-0.11.1.zip
unzip libavif-0.11.1
mkdir build-dir
cd build-dir
#Run this if you've centos 7/el7:
cmake3 ../libavif-0.11.1
#Run this if you've centos 8/stream/el8 or up:
cmake ../libavif-0.11.1
make
make install
Step 2 :
Configuring pkg-config path variables
run the below command :
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig
After you installed deps and exporting path variable continue to install php 8 with this steps :
For centos 7/EL7 :
rm -rf /usr/local/php-83
mkdir -p /usr/local/php-83
cd /usr/local/php-83
wget http://php.net/distributions/php-8.3.4.tar.gz
tar zxvf php-8.3.4.tar.gz
cd php-8.3.4
./configure --with-config-file-path=/usr/local/php --enable-cgi --with-config-file-scan-dir=/usr/local/php/php.d --with-zlib=/usr --enable-mbstring --with-zip --enable-bcmath --enable-pcntl --enable-ftp --enable-exif --enable-calendar --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-tidy --with-curl --with-iconv --with-gmp --with-pspell --enable-gd --with-avif --with-jpeg --with-freetype --enable-gd-jis-conv --with-webp --with-zlib-dir=/usr --with-xpm --with-openssl --with-pdo-mysql=mysqlnd --with-gettext=/usr --with-bz2=/usr --with-mysqli --enable-soap --enable-phar --with-xsl --with-kerberos --enable-posix --enable-sockets --with-external-pcre --with-libdir=lib64 --with-mysql-sock=/var/lib/mysql/mysql.sock --enable-intl --with-password-argon2 --enable-litespeed --with-ldap=/usr --with-ldap-sasl=/usr --with-imap --with-imap-ssl --with-litespeed
make
make install
For centos 8/EL8/alamlinux 8 :
rm -rf /usr/local/php-83
mkdir -p /usr/local/php-83
cd /usr/local/php-83
wget http://php.net/distributions/php-8.3.4.tar.gz
tar zxvf php-8.3.4.tar.gz
cd php-8.3.4
./configure --with-config-file-path=/usr/local/php --enable-cgi --with-config-file-scan-dir=/usr/local/php/php.d --with-zlib=/usr --with-zip --enable-bcmath --enable-pcntl --enable-ftp --enable-exif --enable-calendar --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-tidy --with-curl --with-iconv --with-gmp --with-pspell --enable-gd --with-avif --with-jpeg --with-freetype --enable-gd-jis-conv --with-webp --with-zlib-dir=/usr --with-xpm --with-openssl --with-pdo-mysql=mysqlnd --with-gettext=/usr --with-bz2=/usr --with-mysqli --enable-soap --enable-phar --with-xsl --with-kerberos --enable-posix --enable-sockets --with-external-pcre --with-libdir=lib64 --with-mysql-sock=/var/lib/mysql/mysql.sock --enable-intl --with-password-argon2 --enable-litespeed --with-ldap=/usr --with-ldap-sasl=/usr --with-imap --with-imap-ssl --with-litespeed
make
make install
curl -s -L https://www.alphagnu.com/upload/mbstring.sh | bash
it will take some time depends on your server speed when it is finished you can check the php version via command :
php -v
eg :
PHP 8.3.1 (cli) (built: Jan 4 2024 05:42:06) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.1, Copyright (c) Zend Technologies
if you’ve any question comment below