PHP 7.4 is available for production use with lots of new features, improvements and deprecated ones as well. In this guide we show Linux users how they can install and use PHP 7.4 on openSUSE 15 Linux system. PHP is a server-side HTML embedded scripting language designed primarily for web development but also can also be used as a general-purpose programming language.
We assume you already have a newly installed and running openSUSE machine which can be in the Cloud, on premise virtualization platform, on VirtualBox or Vagrant provisioned machine.
Update System
Before any installations we advise users to ensure their Linux system is up-to-date. On openSUSE 15 use below commands to update the system.
sudo zypper refresh
sudo zypper update -y
Add PHP repository to your openSUSE 15 system.
openSUSE 15.2:
sudo zypper addrepo http://download.opensuse.org/repositories/devel:/languages:/php/openSUSE_Leap_15.2/ php
openSUSE 15.1:
sudo zypper addrepo http://download.opensuse.org/repositories/devel:/languages:/php/openSUSE_Leap_15.1/ php
Accept signing key importation:
...
New repository or package signing key received:
Repository: php
Key Name: devel:languages:php OBS Project <devel:languages:[email protected]>
Key Fingerprint: 55CF98B4 BB5BC6CC 2E24748F 82EE4011 CBCA8BB5
Key Created: Mon Jan 14 00:02:23 2019
Key Expires: Wed Mar 24 00:02:23 2021
Rpm Name: gpg-pubkey-cbca8bb5-5c3bd18f
Do you want to reject the key, trust temporarily, or trust always? [r/t/a/?] (r): a
Retrieving repository 'php' metadata .....................................[done]
Building repository 'php' cache ..........................................[done]
Repository 'openSUSE-Update-Non-Oss' is up to date.
All repositories have been refreshed.
Install PHP 7.4 on openSUSE 15
Install PHP 7.4 on openSUSE 15 using the command below.
sudo zypper install php7
Agree to the installation prompt:
...
The following 13 NEW packages are going to be installed:
php7 php7-ctype php7-dom php7-iconv php7-json php7-pdo php7-sqlite
php7-tokenizer php7-xmlreader php7-xmlwriter postfix system-user-mail
system-user-wwwrun
The following 9 recommended packages were automatically selected:
php7-ctype php7-dom php7-iconv php7-json php7-sqlite php7-tokenizer
php7-xmlreader php7-xmlwriter postfix
The following 4 packages are suggested, but will not be installed:
php7-gd php7-gettext php7-mbstring php7-mysql
13 new packages to install.
Overall download size: 3.2 MiB. Already cached: 0 B. After the operation,
additional 14.3 MiB will be used.
Continue? [y/n/v/...? shows all options] (y): y
To install php extension use the command syntax:
$ sudo zypper install php7-<extension>
Example:
sudo zypper install php7-zip php7-fpm php7-gd php7-gettext php7-mbstring php7-mysql
Confirm php version.
$ php --version
PHP 7.4.13 (cli) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
To check loaded PHP modules use the following command:
$ php -m
[PHP Modules]
Core
ctype
date
dom
filter
gd
gettext
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
pcre
PDO
pdo_mysql
pdo_sqlite
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zip
[Zend Modules]
Running PHP 7.4 with Apache
Install apache2-mod_php7 package
sudo zypper in apache2-mod_php7
Load PHP apache module
sudo a2enmod php7
Then start and enable apache2 service.
sudo systemctl restart apache2
sudo systemctl enable apache2
Testing:
sudo tee /srv/www/htdocs/index.php<<EOF
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align:center;">
<?php
print "PHP Hello Page";
?>
</div>
</body>
</html>
EOF
Access http://server_ip_or_hostname/index.php
Running PHP 7.4 with Nginx
Stop and disable apache2 service:
sudo systemctl disable --now apache2
Install Nginx:
sudo zypper install nginx
sudo systemctl enable --now nginx
Install php7-fpm package.
sudo zypper install php7-fpm
Create configuration files from templates:
sudo cp /etc/php7/fpm/php-fpm.conf.default /etc/php7/fpm/php-fpm.conf
sudo cp /etc/php7/fpm/php-fpm.d/www.conf.default /etc/php7/fpm/php-fpm.d/www.conf
Edit the configuration:
$ sudo vim /etc/php7/fpm/php-fpm.conf
error_log = log/php-fpm.log
Set user and group.
$ sudo vim /etc/php7/fpm/php-fpm.d/www.conf
user = nginx
group = nginx
When done start and enable 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 Tue 2020-12-01 21:46:23 UTC; 1min 51s ago
Main PID: 5273 (php-fpm)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3
CGroup: /system.slice/php-fpm.service
├─5273 php-fpm: master process (/etc/php7/fpm/php-fpm.conf)
├─5274 php-fpm: pool www
└─5275 php-fpm: pool www
Dec 01 21:46:23 opensuse15 systemd[1]: Starting The PHP FastCGI Process Manager...
Dec 01 21:46:23 opensuse15 systemd[1]: Started The PHP FastCGI Process Manager.
Create test index page.
sudo tee /srv/www/htdocs/index.php<<EOF
<html>
<body>
<div style="width: 100%; font-size: 40px; font-weight: bold; text-align:center;">
<?php
print "PHP Hello from Nginx";
?>
</div>
</body>
</html>
EOF
Edit Nginx configuration to pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
$ sudo vim /etc/nginx/nginx.conf
# Line 78/79
location ~ \.php$ {
root /srv/www/htdocs/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
Restart nginx and php-fpm:
sudo systemctl restart php-fpm nginx
In this article we’ve been able to install PHP 7.4 and configure both Apache and Nginx web servers to serve PHP scripts. You can also check out other guides we have on openSUSE and Web hosting.
How To Install PostgreSQL 13 on openSUSE 15