How to Install PHP 8.4 on Garuda|Arch|Manjaro

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 and AEGIS256 support
  • New array_findarray_find_keyarray_any, and array_all functions
  • New grapheme_str_split function
  • BCMath: New bcdivmod function
  • Intl: New intltz_get_iana_id function and IntlTimeZone::getCanonicalID method
  • Curl: New CURL_HTTP_VERSION_3 and CURL_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 replace CURLOPT_FTP_RESPONSE_TIMEOUT
  • Curl: New CURLOPT_TCP_KEEPCNT option
  • phpinfo: Show PHP Integer Size information
  • Mbstring: New mb_trimmb_ltrim, and mb_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 and mb_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:

Similar guides;

Your IT Journey Starts Here!

Ready to level up your IT skills? Our new eLearning platform is coming soon to help you master the latest technologies.

Be the first to know when we launch! Join our waitlist now.

Join our Linux and open source community. Subscribe to our newsletter for tips, tricks, and collaboration opportunities!

Recent Post

Leave a Comment

Your email address will not be published. Required fields are marked *

Related Post

On our today’s guide, we will focus on how to schedule jobs on Linux with cron and systemd timers. One […]

Every experienced System Administrator should have a knowledge of user and group management in a Linux system. Executing this tasks […]

Hi there! Welcome to our today’s guide on getting familiar with Major Linux Desktop Environments. Linux and Unix-like OS are […]

Let's Connect

Unleash the full potential of your business with CloudSpinx. Our expert solutions specialists are standing by to answer your questions and tailor a plan that perfectly aligns with your unique needs.
You will get a response from our solutions specialist within 12 hours
We understand emergencies can be stressful. For immediate assistance, chat with us now

Contact CloudSpinx today!

Download CloudSpinx Profile

Discover the full spectrum of our expertise and services by downloading our detailed Company Profile. Simply enter your first name, last name, and email address.