Jump to content
View in the app

A better way to browse. Learn more.

AlphaGNU

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Install latest version of php 8.4 PHP switcher in CWP- Control web panel - EL8/9 AlmaLinux 8/9

Featured Replies

This is a tutorial for PHP 8.4 installation in CWP PHP Switcher

I've switched to direct compiler environment variables that pass flags straight to gcc, g++, and ld - eliminating pkg-config dependency that was failing across servers.

Old Method (Unstable):

pkg-config → generates flags → gcc/g++/ld
↓
Breaks when pkg-config .pc files missing/corrupted/version mismatch

New Method (Stable):

CFLAGS/CXXFLAGS/LDFLAGS → gcc/g++/ld directly
↓
No pkg-config intermediary = consistent builds everywhere

Install dependencies :

# For el9 only : 
dnf config-manager --set-enabled crb

# run these for el8 and el9
dnf groupinstall "Development Tools"
dnf install glibc-devel elfutils-libelf-devel
dnf install git make gcc gcc-c++ binutils glibc-devel autoconf libtool bison re2c automake libxml2-devel openssl-devel sqlite-devel bzip2-devel libcurl-devel libpng-devel libavif-devel libwebp-devel libjpeg-devel libXpm-devel freetype-devel gmp-devel libicu-devel openldap-devel oniguruma-devel libargon2-devel libtidy-devel libxslt-devel 

Build PHP 8.4 switcher :

rm -rf /usr/local/php-84
mkdir -p /usr/local/php-84
cd /usr/local/php-84
wget http://php.net/distributions/php-8.4.15.tar.gz
tar zxvf php-8.4.15.tar.gz
cd php-8.4.15
./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 --enable-gd --with-avif --with-jpeg --with-freetype --enable-gd-jis-conv --with-webp --with-xpm --with-openssl --with-pdo-mysql=mysqlnd --with-gettext=/usr --with-bz2=/usr --with-mysqli --enable-soap --enable-phar --with-xsl --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 
export CFLAGS="-O2 -fPIE -DPIC"
export CXXFLAGS="-O2 -fPIE -DPIC"
export LDFLAGS="-pie -Wl,--as-needed"
make -j$(nproc)
make install

After that, PHP 8.4 will be installed. You can check via the php -v command :

[root@alma]# php -v
PHP 8.4.15 (cli) (built: Dec  3 2025 01:45:34) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.4.15, Copyright (c) Zend Technologies
  • Sandeep B. changed the title to Install latest version of php 8.4 PHP switcher in CWP- Control web panel - EL8/9 AlmaLinux 8/9

Hello @Sandeep B. Thank you for the tutorial.

I ran into a few problems under AlmaLinux 9.6, which this installation script has already fixed.

#!/bin/bash
set -euo pipefail
set -x

# For el9 only :
dnf config-manager --set-enabled crb

# run these for el8 and el9
dnf -y groupinstall "Development Tools"
dnf -y install glibc-devel elfutils-libelf-devel
dnf -y install git make gcc gcc-c++ \
  binutils glibc-devel autoconf libtool \
  bison re2c automake libxml2-devel openssl-devel \
  sqlite-devel bzip2-devel libcurl-devel libpng-devel \
  libavif-devel libwebp-devel libjpeg-devel \
  libXpm-devel freetype-devel gmp-devel \
  libicu-devel openldap-devel oniguruma-devel \
  libargon2-devel libtidy-devel libxslt-devel

# Build PHP 8.4 switcher:
rm -rf /usr/local/php-84
mkdir -p /usr/local/php-84
cd /usr/local/php-84
wget http://php.net/distributions/php-8.4.15.tar.gz
tar zxvf php-8.4.15.tar.gz
cd php-8.4.15

# For el9 mandatory: --with-openssl=/usr/lib64
./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 \
  --enable-gd \
  --with-avif \
  --with-jpeg \
  --with-freetype \
  --enable-gd-jis-conv \
  --with-webp \
  --with-xpm \
  --with-openssl=/usr/lib64 \
  --with-pdo-mysql=mysqlnd \
  --with-gettext=/usr \
  --with-bz2=/usr \
  --with-mysqli \
  --enable-soap \
  --enable-phar \
  --with-xsl \
  --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-pear \
  --with-sodium

# These settings will break on el9 - AlmaLinux 9.6
# export CFLAGS="-O2 -fPIE -DPIC"
# export CXXFLAGS="-O2 -fPIE -DPIC"
# export LDFLAGS="-pie -Wl,--as-needed"

export PKG_CONFIG_PATH=/usr/lib64/pkgconfig
export CFLAGS="-O2"
export CXXFLAGS="-O2"
export LDFLAGS="-L/usr/lib64 -Wl,--as-needed"

make -j$(nproc)
make install

# ---------- remove old .ini from PHP 5.x, 7.x -----
rm -f /usr/local/php/php.d/sodium.ini

# ---------- PECL IMAGICK INSTALL ----------
echo "Installing Imagick dependencies…"
dnf -y install ImageMagick ImageMagick-devel

echo "Installing Imagick via PECL…"
/usr/local/bin/pecl install imagick

echo "Adding imagick.ini…"
mkdir -p /usr/local/php/php.d
echo "extension=imagick.so" > /usr/local/php/php.d/imagick.ini

echo "PHP CLI build with Imagick completed successfully!"
php -v
php -m | grep imagick

--with-openssl=/usr/lib64
--with-pear
--with-sodium
without the switches and with the recommended FLAG settings, PHP 8.4.15 did not compile properly.

And it may also be necessary to remove the old sodium.ini if it was left in the directory from PHP 5.x, 7.x.

rm -f /usr/local/php/php.d/sodium.ini

But with the above settings, all parts of PHP 8.4.15 are compiling properly in AlmaLinux 9.6.

[root@vps ~]# php -i | grep -i sodium
Configure Command =>  './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' '--enable-gd' '--with-avif' '--with-jpeg' '--with-freetype' '--enable-gd-jis-conv' '--with-webp' '--with-xpm' '--with-openssl=/usr/lib64' '--with-pdo-mysql=mysqlnd' '--with-gettext=/usr' '--with-bz2=/usr' '--with-mysqli' '--enable-soap' '--enable-phar' '--with-xsl' '--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-pear' '--with-sodium'
sodium
sodium support => enabled
libsodium headers version => 1.0.18
libsodium library version => 1.0.18

[root@vps ~]# php -i | grep -i openssl
Configure Command =>  './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' '--enable-gd' '--with-avif' '--with-jpeg' '--with-freetype' '--enable-gd-jis-conv' '--with-webp' '--with-xpm' '--with-openssl=/usr/lib64' '--with-pdo-mysql=mysqlnd' '--with-gettext=/usr' '--with-bz2=/usr' '--with-mysqli' '--enable-soap' '--enable-phar' '--with-xsl' '--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-pear' '--with-sodium'
SSL Version => OpenSSL/3.5.1
libSSH Version => libssh/0.10.4/openssl/zlib
openssl
OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 3.5.1 1 Jul 2025
OpenSSL Header Version => OpenSSL 3.5.1 1 Jul 2025
Openssl default config => /etc/pki/tls/openssl.cnf
openssl.cafile => no value => no value
openssl.capath => no value => no value
OpenSSL support => enabled 

@TheHolbi Thanks for the script.

Getting the following error for some reason:
bash: ./PHP-8_4-Install: /bin/bash^M: bad interpreter: No such file or directory

Also with CWP on AlmaLinux 9.7:
How/where could you add the lines to install the PECL libraries for IMAP and mailparse?

Thanks

Edited by Starburst
Add error line

On 12/9/2025 at 6:23 PM, Starburst said:

@TheHolbi Thanks for the script.

Getting the following error for some reason:
bash: ./PHP-8_4-Install: /bin/bash^M: bad interpreter: No such file or directory

Also with CWP on AlmaLinux 9.7:
How/where could you add the lines to install the PECL libraries for IMAP and mailparse?

Thanks

Hi @Starburst I have corrected the installation of the PECl modules for the PHP-FPM version only. You can find the installers of these modules in the External modules and Pre Run models ZIP files at the link, which ran in the AlmaLinux 9.6, 9.7 environment.
Here:
https://www.alphagnu.com/topic/614-how-to-add-custom-php-fpm-84-85-support-to-cwp-on-almalinux-9x/

On 12/9/2025 at 6:23 PM, Starburst said:

@TheHolbi Thanks for the script.

Also with CWP on AlmaLinux 9.7:
How/where could you add the lines to install the PECL libraries for IMAP and mailparse?

Thanks

E.g: Pre run module for Imap (PHP-FPM 8.4, 8.5) and the compiler takes care of the rest.
The Pre run modules place is: /usr/local/cwpsrv/htdocs/resources/conf/el9/php-fpm_selector/pre_run/8.4/imap7.sh

#/bin/bash

dnf install uw-imap-devel -y

End External module for MailParse (PHP-FPM 8.4, 8.5)

#!/bin/bash
set -euo pipefail

# --- Detect PHP-FPM version (8.4 or 8.5) ---
if [ -x /opt/alt/php-fpm84/usr/bin/php-config ]; then
    PHPFPM="/opt/alt/php-fpm84"
elif [ -x /opt/alt/php-fpm85/usr/bin/php-config ]; then
    PHPFPM="/opt/alt/php-fpm85"
else
    echo "ERROR: No php-fpm84 or php-fpm85 found."
    exit 1
fi

PHPBIN="${PHPFPM}/usr/bin/php"
PHPCONFIG="${PHPFPM}/usr/bin/php-config"
PHPINIDIR="${PHPFPM}/usr/php/php.d"

echo "Detected PHP: ${PHPBIN}"

# --- Install dependencies ---
dnf -y install re2c file

cd /usr/local/src
rm -rf mailparse* mailparse.tgz

# --- Stable version: mailparse 3.1.6 ---
MAILPARSE_VERSION="3.1.6"
MAILPARSE_URL="https://pecl.php.net/get/mailparse-${MAILPARSE_VERSION}.tgz"

echo "Downloading mailparse ${MAILPARSE_VERSION}..."
wget -q "${MAILPARSE_URL}" -O mailparse.tgz

tar -xf mailparse.tgz
cd "mailparse-${MAILPARSE_VERSION}"

# --- Build ---
echo "Running phpize..."
"${PHPFPM}/usr/bin/phpize"

echo "Configuring..."
./configure --with-php-config="${PHPCONFIG}"

echo "Compiling..."
make -j"$(nproc)"
make install

# --- Check extension installation ---
EXTDIR="$(${PHPCONFIG} --extension-dir)"

if [ -f "${EXTDIR}/mailparse.so" ]; then
    echo "Creating mailparse.ini"
    echo "extension=mailparse.so" > "${PHPINIDIR}/mailparse.ini"
    echo "mailparse installed successfully."
else
    echo "ERROR: mailparse.so was not found in ${EXTDIR}"
    exit 1
fi

I hope this helped.

Look at the full article:
https://www.alphagnu.com/topic/614-how-to-add-custom-php-fpm-84-85-support-to-cwp-on-almalinux-9x/

Create an account or sign in to comment

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.