---
title: "How to Install PHP and MariaDB on Amazon Linux 2"
description: "We will learn how to set up PHP and MariaDB on Amazon Linux 2 in this tutorial. We will also discover how to set up PHP so that it functions with the Apache web server. We will also discover how to set up MariaDB so that it functions with PHP."
author: "Mohammad Abu Mattar"
canonical: https://mkabumattar.com/blog/post/how-to-install-php-and-mariadb-on-amazon-linux-2
---

# How to Install PHP and MariaDB on Amazon Linux 2

## Introduction

We will learn how to set up PHP and MariaDB on Amazon Linux 2 in this tutorial. We will also discover how to set up PHP so that it functions with the Apache web server. We will also discover how to set up MariaDB so that it functions with PHP.

## Prerequisites

To follow along with this tutorial, you will need:

- An Amazon Linux 2 EC2 instance with a public IP address.
- A non-root user with sudo privileges.
- A domain name pointing to the public IP address of your EC2 instance.
- Apache web server installed and running. [How to Install PHP and MariaDB on Amazon Linux 2](/blog/post/how-to-install-apache-web-server-on-amazon-linux-2).

## Installing PHP/MariaDB, setting up MariaDB, and running a basic PHP demo

### Step 1 Installing PHP

PHP is a free and open-source scripting language that is used to create dynamic web pages. It is the most popular web scripting language in the world.

At first, we will enable `amazon-linux-extras` so that we can specify the PHP version that we want to install.

```shell
sudo amazon-linux-extras enable php7.4 -y
```

Next, we will install PHP.

```shell
sudo yum install php php-{pear,cgi,common,curl,mbstring,gd,mysqlnd,gettext,bcmath,json,xml,fpm,intl,zip,imap} -y
```

We will now verify that PHP has been installed.

```shell
php -v
```

The output should look like this:

```shell
PHP 7.4.30 (cli) (built: Jun 23 2022 20:19:00) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
```

### Step 2 Installing MariaDB

MariaDB is a free and open-source relational database management system (RDBMS) that is used to store data for dynamic web pages. It is a fork of MySQL.

At first, we will install MariaDB.

```shell
sudo yum install mariadb-server -y
```

Next, we will start MariaDB.

```shell
sudo systemctl start mariadb
```

We will configure MariaDB so that it starts automatically when the system boots.

```shell
sudo systemctl enable mariadb
```

We will now secure MariaDB.

```shell
sudo mysql_secure_installation
```

You will be prompted to enter the current root password for MariaDB. Press `Enter` to continue.

```shell
Enter current password for root (enter for none):
```

Next, you will be prompted to set a new root password for MariaDB. Enter a new password and press `Enter`.

```shell
Set root password? [Y/n]
```

You will be prompted to remove anonymous users. Press `Y` and then press `Enter`.

```shell
Remove anonymous users? [Y/n]
```

You will be prompted to disable remote root login. Press `Y` and then press `Enter`.

```shell
Disallow root login remotely? [Y/n]
```

You will be prompted to remove the test database and access to it. Press `Y` and then press `Enter`.

```shell
Remove test database and access to it? [Y/n]
```

You will be prompted to reload the privilege tables now. Press `Y` and then press `Enter`.

```shell
Reload privilege tables now? [Y/n]
```

### Step 3 Configuring PHP to Work with Apache

At first, we need to restart Apache.

```shell
sudo systemctl restart httpd
```

We will create a directory for our PHP files.

```shell
sudo mkdir /var/www/html/php
```

Next, we will create a PHP file.

```shell
sudo vi /var/www/html/php/index.php
```

We will add the following content to the file.

```php
<?php
  phpinfo();
```

We will now open the file in a web browser.

```shell
http://your_domain_name/php/index.php
```

You should see the following output:

![phpinfo](/assets/blog/0013-how-to-install-php-and-mariadb-on-amazon-linux-2/phpinfo.png)

### Step 4 Configuring MariaDB to Work with PHP

At first, we will create a database for our PHP files.

```shell
sudo mysql -u root -p
```

```sql
CREATE DATABASE php;
```

Next, we will create a user for our PHP files.

```sql
CREATE USER 'php'@'localhost' IDENTIFIED BY 'password';
```

We will grant all privileges to the user.

```sql
GRANT ALL PRIVILEGES ON php.* TO 'php'@'localhost';
```

We will now exit MariaDB.

```sql
exit
```

We will create a PHP file.

```shell
sudo vi /var/www/html/php/db.php
```

We will add the following content to the file.

```php
<?php
  $db = new mysqli('localhost', 'php', 'password', 'php');
  if ($db->connect_error) {
    die('Connection failed: ' . $db->connect_error);
  }
  echo 'Connected successfully';
```

We will now open the file in a web browser.

```shell
http://your_domain_name/php/db.php
```

You should see the following output:

![phpdb](/assets/blog/0013-how-to-install-php-and-mariadb-on-amazon-linux-2/phpdb.png)

## Conclusion

In this tutorial, we learned how to set up PHP and MariaDB on Amazon Linux 2. We also learned how to set up PHP so that it functions with the Apache web server. We also learned how to set up MariaDB so that it functions with PHP.

## Resources

- [PHP Manual - Installation on Unix systems](https://www.php.net/manual/en/install.unix.php)
- [MariaDB Server Documentation - Installing MariaDB Packages with YUM/DNF](https://mariadb.com/kb/en/installing-mariadb-packages-with-yum/)
- [Amazon EC2 User Guide for Linux Instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html)
- [Tutorial: Installing a LAMP Web Server on Amazon Linux 2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2.html)
- [Amazon Linux Extras](https://aws.amazon.com/amazon-linux-2/faqs/#Amazon_Linux_Extras)
- [Apache HTTP Server Documentation](https://httpd.apache.org/docs/)
- [`mysql_secure_installation` - MariaDB Knowledge Base](https://mariadb.com/kb/en/mysql_secure_installation/)
- [PHP Manual - `phpinfo()`](https://www.php.net/manual/en/function.phpinfo.php)
- [PHP Manual - MySQLi connect](https://www.php.net/manual/en/mysqli.construct.php)
- [Previous Post: How to Install Apache Web Server on Amazon Linux 2](/blog/post/how-to-install-apache-web-server-on-amazon-linux-2)
- [MySQL CREATE DATABASE Statement](https://dev.mysql.com/doc/refman/8.0/en/create-database.html) (MariaDB syntax is similar)
- [MySQL CREATE USER Statement](https://dev.mysql.com/doc/refman/8.0/en/create-user.html) (MariaDB syntax is similar)
- [MySQL GRANT Statement](https://dev.mysql.com/doc/refman/8.0/en/grant.html) (MariaDB syntax is similar)
