Chapter 10. Using the PHP scripting language

Hypertext Preprocessor (PHP) is a general-purpose scripting language mainly used for server-side scripting, which enables you to run the PHP code using a web server.

In RHEL 8, the PHP scripting language is provided by the php module, which is available in multiple streams (versions).

Depending on your use case, you can install a specific profile of the selected module stream:

  • common - The default profile for server-side scripting using a web server. It includes several widely used extensions.
  • minimal - This profile installs only the command-line interface for scripting with PHP without using a web server.
  • devel - This profile includes packages from the common profile and additional packages for development purposes.

10.1. Installing the PHP scripting language

This section describes how to install a selected version of the php module.

Procedure

  • To install a php module stream with the default profile, use:

    # yum module install php:stream

    Replace stream with the version of PHP you wish to install.

    For example, to install PHP 7.3:

    # yum module install php:7.3

    The default common profile installs also the php-fpm package, and preconfigures PHP for use with the Apache HTTP Server or nginx.

  • To install a specific profile of a php module stream, use:

    # yum module install php:stream/profile

    Replace stream with the desired version and profile with the name of the profile you wish to install.

    For example, to install PHP 7.3 for use without a web server:

    # yum module install php:7.3/minimal

Additional resources

10.2. Using the PHP scripting language with a web server

10.2.1. Using PHP with the Apache HTTP Server

In RHEL 8, the Apache HTTP Server enables you to run PHP as a FastCGI process server. FastCGI Process Manager (FPM) is an alternative PHP FastCGI daemon that allows a website to manage high loads. PHP uses FastCGI Process Manager by default in RHEL 8.

This section describes how to run the PHP code using the FastCGI process server.

Prerequisites

Procedure

  1. Install the httpd module:

    # yum module install httpd:2.4
  2. Start the Apache HTTP Server:

    # systemctl start httpd

    Or, if the Apache HTTP Server is already running on your system, restart the httpd service after installing PHP:

    # systemctl restart httpd
  3. Start the php-fpm service:

    # systemctl start php-fpm
  4. Optional: Enable both services to start at boot time:

    # systemctl enable php-fpm httpd
  5. To obtain information about your PHP settings, create the index.php file with the following content in the /var/www/html/ directory:

    echo '<?php phpinfo(); ?>' > /var/www/html/index.php
  6. To run the index.php file, point the browser to:

    http://<hostname>/
  7. Optional: Adjust configuration if you have specific requirements:

    • /etc/httpd/conf/httpd.conf - generic httpd configuration
    • /etc/httpd/conf.d/php.conf - PHP-specific configuration for httpd
    • /usr/lib/systemd/system/httpd.service.d/php-fpm.conf - by default, the php-fpm service is started with httpd
    • /etc/php-fpm.conf - FPM main configuration
    • /etc/php-fpm.d/www.conf - default www pool configuration

Example 10.1. Running a "Hello, World!" PHP script using the Apache HTTP Server

  1. Create a hello directory for your project in the /var/www/html/ directory:

    # mkdir hello
  2. Create a hello.php file in the /var/www/html/hello/ directory with the following content:

    # <!DOCTYPE html>
    <html>
    <head>
    <title>Hello, World! Page</title>
    </head>
    <body>
    <?php
        echo 'Hello, World!';
    ?>
    </body>
    </html>
  3. Start the Apache HTTP Server:

    # systemctl start httpd
  4. To run the hello.php file, point the browser to:

    http://<hostname>/hello/hello.php

    As a result, a web page with the “Hello, World!” text is displayed.

10.2.2. Using PHP with the nginx web server

This section describes how to run PHP code through the nginx web server.

Prerequisites

Procedure

  1. Install an nginx module stream:

    # yum module install nginx:stream

    Replace stream with the version of nginx you wish to install.

    For example, to install nginx version 1.16:

    # yum module install nginx:1.16
  2. Start the nginx server:

    # systemctl start nginx

    Or, if the nginx server is already running on your system, restart the nginx service after installing PHP:

    # systemctl restart nginx
  3. Start the php-fpm service:

    # systemctl start php-fpm
  4. Optional: Enable both services to start at boot time:

    # systemctl enable php-fpm nginx
  5. To obtain information about your PHP settings, create the index.php file with the following content in the /usr/share/nginx/html/ directory:

    echo '<?php phpinfo(); ?>' > /usr/share/nginx/html/index.php
  6. To run the index.php file, point the browser to:

    http://<hostname>/
  7. Optional: Adjust configuration if you have specific requirements:

    • /etc/nginx/nginx.conf - nginx main configuration
    • /etc/nginx/conf.d/php-fpm.conf - FPM configuration for nginx
    • /etc/php-fpm.conf - FPM main configuration
    • /etc/php-fpm.d/www.conf - default www pool configuration

Example 10.2. Running a "Hello, World!" PHP script using the nginx server

  1. Create a hello directory for your project in the /usr/share/nginx/html/ directory:

    # mkdir hello
  2. Create a hello.php file in the /usr/share/nginx/html/hello/ directory with the following content:

    # <!DOCTYPE html>
    <html>
    <head>
    <title>Hello, World! Page</title>
    </head>
    <body>
    <?php
        echo 'Hello, World!';
    ?>
    </body>
    </html>
  3. Start the nginx server:

    # systemctl start nginx
  4. To run the hello.php file, point the browser to:

    http://<hostname>/hello/hello.php

    As a result, a web page with the “Hello, World!” text is displayed.

10.3. Running a PHP script using the command-line interface

A PHP script is usually run using a web server, but also can be run using the command-line interface.

If you want to run php scripts using only command-line, install the minimal profile of a php module stream.

See Section 10.1, “Installing the PHP scripting language” for details.

Prerequisites

Procedure

  1. In a text editor, create a filename.php file

    Replace filename with the a name of your file.

  2. Execute the created filename.php file from the command line:

    # php filename.php

Example 10.3. Running a "Hello, World!" PHP script using the command-line interface

  1. Create a hello.php file with the following content using a text editor:

    <?php
        echo 'Hello, World!';
    ?>
  2. Execute the hello.php file from the command line:

    # php hello.php

    As a result, “Hello, World!” is printed.

10.4. Additional resources

  • httpd(8) — The manual page for the httpd service containing the complete list of its command-line options.
  • httpd.conf(5) — The manual page for httpd configuration, describing the structure and location of the httpd configuration files.
  • nginx(8) — The manual page for the nginx web server containing the complete list of its command-line options and list of signals.
  • php-fpm(8) — The manual page for PHP FPM describing the complete list of its command-line options and configuration files.