PHP is an HTML embedded programming language that runs on the server. It’s a popular programming language for creating webpages and Web applications. PHP is utilized in some of the most popular online content management systems, such as WordPress, Drupal, and Joomla. PHP 8.4 is now ready for production and is a major upgrade and release of the PHP programming language since version 8.3.
In this brief post, we’ll install PHP 8.4 on the Garuda Linux operating system. Make sure you have a fresh Garuda Linux system up and running, which may be in the cloud, on an on-premise virtualization platform, or on a VirtualBox or Vagrant provided machine.
Let’s have a look at the features of PHP 8.4 before we start installing it on Garuda|Arch|Manjaro Linux system.
Features of PHP 8.4
The following are the features of PHP 8.4:
- Sodium:
AEGIS-128L
andAEGIS256
support - New
array_find
,array_find_key
,array_any
, andarray_all
functions - New
grapheme_str_split
function - BCMath: New
bcdivmod
function - Intl: New
intltz_get_iana_id
function andIntlTimeZone::getCanonicalID
method - Curl: New
CURL_HTTP_VERSION_3
andCURL_HTTP_VERSION_3ONLY
constants for HTTP/3 support - Curl:
curl_getinfo
–CURLINFO_POSTTRANSFER_TIME_T
support - Curl: New
CURLOPT_PREREQFUNCTION
option - Curl: New
CURLOPT_DEBUGFUNCTION
option - Curl: New
CURLOPT_SERVER_RESPONSE_TIMEOUT
option to replaceCURLOPT_FTP_RESPONSE_TIMEOUT
- Curl: New
CURLOPT_TCP_KEEPCNT
option - phpinfo: Show PHP Integer Size information
- Mbstring: New
mb_trim
,mb_ltrim
, andmb_rtrim
functions - Date: New
DateTime(Immutable)::createFromTimestamp
methods - New rounding modes in
round()
function - Date: New
DateTime(Immutable)::get/setMicrosecond
methods - New
request_parse_body
function - PCRE2 Upgrade and Regular Expression Changes
- Curl:
curl_version()
feature_list
support - New
http_(get|clear)_last_response_headers
functions - New
mb_ucfirst
andmb_lcfirst
functions
Install PHP 8.4 on Garuda|Arch|Manjaro
The default version of PHP available in Garuda|Arch|Manjaro Linux repository is 8.4.
To begin, let’s update the system:
sudo pacman -Syu
Install PHP 8.4 by executing the command once the system has been updated.
$ sudo pacman -S php
resolving dependencies...
looking for conflicting packages...
Package (1) New Version Net Change Download Size
extra/php 8.4.4-1 31.49 MiB 5.37 MiB
Total Download Size: 5.37 MiB
Total Installed Size: 31.49 MiB
:: Proceed with installation? [Y/n] y
Verify PHP version installed.
$ php -v
PHP 8.4.4 (cli) (built: Feb 11 2025 18:24:50) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.4.4, Copyright (c) Zend Technologies
We have PHP 8.4.x installed, as you can see from the result. The minor release version may change if you conduct this installation at a later time.
Install PHP 8.4 Extensions
By attaching extension name to php-
, you may install PHP 8.4 extensions. See the example below, which installs the fundamental PHP extensions I need for my development and hosting of apps.
sudo pacman -S php-apache php-cgi php-fpm php-gd php-embed php-intl php-redis php-snmp
Accept the installations prompts:
resolving dependencies...
looking for conflicting packages...
Package (16) Old Version New Version Net Change Download Size
extra/apache 2.4.63-1 6.41 MiB 1.67 MiB
extra/apr 1.7.5-3 1.16 MiB 0.27 MiB
extra/apr-util 1.6.3-2 0.67 MiB 0.16 MiB
extra/gd 2.3.3-8 0.65 MiB 0.15 MiB
extra/libheif 1.19.5-1 1.65 MiB 0.51 MiB
extra/liblzf 3.6-5 0.05 MiB 0.02 MiB
extra/net-snmp 5.9.4-6 8.53 MiB 2.00 MiB
extra/php-igbinary 3.2.16-2 0.10 MiB 0.04 MiB
extra/php 8.4.4-1 8.4.4-1 0.00 MiB
extra/php-apache 8.4.4-1 18.49 MiB 3.58 MiB
extra/php-cgi 8.4.4-1 22.02 MiB 3.61 MiB
extra/php-embed 8.4.4-1 18.47 MiB 3.57 MiB
extra/php-fpm 8.4.4-1 22.07 MiB 3.67 MiB
extra/php-gd 8.4.4-1 0.12 MiB 0.03 MiB
extra/php-redis 6.1.0-3 1.03 MiB 0.25 MiB
extra/php-snmp 8.4.4-1 0.06 MiB 0.02 MiB
Total Download Size: 19.56 MiB
Total Installed Size: 132.98 MiB
Net Upgrade Size: 101.49 MiB
:: Proceed with installation? [Y/n] y
Using pacman -Qi
, you can see package information.
$ pacman -Qi php
Name : php
Version : 8.4.4-1
Description : A general-purpose scripting language that is especially suited to web development
Architecture : x86_64
URL : https://www.php.net/
Licenses : PHP-3.01
Groups : None
Provides : php-interpreter=8.4 php-intl=8.4.4
Depends On : libxml2 curl libzip pcre2 argon2 oniguruma
Optional Deps : None
Required By : php-apache php-cgi php-embed php-fpm php-gd php-igbinary php-snmp
Optional For : None
Conflicts With : php-intl
Replaces : php-intl
Installed Size : 31.49 MiB
Packager : Pierre Schmitz <[email protected]>
Build Date : Tue 11 Feb 2025 09:24:50 PM EAT
Install Date : Mon 24 Feb 2025 09:12:38 PM EAT
Install Reason : Explicitly installed
Install Script : No
Validated By : Signature
Running PHP 8.4 with Apache on Garuda|Arch|Manjaro
In this demo, we are going to test PHP 8.4 with Apache. Enable PHP on Apache as follows:
Edit /etc/httpd/conf/httpd.conf
file with your favorite editor and make the following changes;
$ sudo vim /etc/httpd/conf/httpd.conf
#comment the line:
#LoadModule mpm_event_module modules/mod_mpm_event.so
#and uncomment the line:
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#Append this at the end of the LoadModule list:
LoadModule php_module modules/libphp.so
AddHandler php-script .php
#Append this at the end of the Include list:
Include conf/extra/php_module.conf
Create test index.php
file in /srv/http
directory:
sudo vim /srv/http/index.php
Add the following contents to the created file above:
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align:center;">
<?php
print "Hello World";
?>
</div>
</body>
</html>
Restart httpd.service
:
sudo systemctl restart httpd
Access http://server_ip_or_hostname/index.php

Running PHP 8.4 with Nginx on Garuda|Arch|Manjaro
Stop and disable httpd service:
sudo systemctl disable --now httpd
Install Nginx:
sudo pacman -S nginx
Enable nginx:
sudo systemctl enable --now nginx
Install php-fpm package:
sudo pacman -S php-fpm
Edit the configuration:
$ sudo vim /etc/php/php-fpm.conf
error_log = log/php-fpm.log
Set user and group:
$ sudo vim /etc/php/php-fpm.d/www.conf
user = www-data
group = www-data
#uncomment the following line:
security.limit_extensions = .php .php3 .php4 .php5 .php7
When you’re finished, start and activate the service:
sudo systemctl enable --now php-fpm
Confirm status:
$ systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2025-03-24 20:28:47 EAT; 2s ago
Main PID: 129238 (php-fpm)
Status: "Ready to handle connections"
Tasks: 3 (limit: 3104)
Memory: 7.1M
CPU: 102ms
CGroup: /system.slice/php-fpm.service
├─129238 php-fpm: master process (/etc/php/php-fpm.conf)
├─129239 php-fpm: pool www
└─129240 php-fpm: pool www
Feb 24 20:28:47 garuda systemd[1]: Starting The PHP FastCGI Process Manager...
Feb 24 20:28:47 gruda systemd[1]: Started The PHP FastCGI Process Manager.
Create test index.php
file in /srv/http
directory:
sudo touch /srv/http/index.php
Add the following contents to the created file above:
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align:center;">
<?php
print "Hello World";
?>
</div>
</body>
</html>
Change the Nginx settings to send PHP scripts to the FastCGI server:
$ sudo vim /etc/nginx/nginx.conf
location ~ \.php$ {
root /srv/http/;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
Restart nginx and php-fpm:
sudo systemctl restart php-fpm nginx
Access http://server_ip_or_hostname/index.php
Conclusion.
This concludes our tutorial on installing PHP 8.4 on Garuda|Arch|Manjaro Linux. Enjoy developing and hosting your applications on Garuda|Arch|Manjaro Linux with PHP 8.4. Cheers!
Udemy Video Courses to Learn MySQL / MariaDB Databases:
- The Ultimate MySQL Bootcamp: Go from SQL Beginner to Expert
- SQL – MySQL for Data Analytics and Business Intelligence
- MySQL, SQL and Stored Procedures from Beginner to Advanced
- SQL for Beginners: Learn SQL using MySQL and Database Design
- The Complete MySQL Developer Course
- MySQL Database Administration: Beginner SQL Database Design
- Learn Database Design with MySQL
Similar guides;