Red Hat Training

A Red Hat training course is available for RHEL 8

第 44 章 使用 PHP 脚本语言

超级文本预处理器(PHP)主要用于服务器端脚本,它可让您使用 web 服务器运行 PHP 代码。

在 RHEL 8 中,PHP 脚本语言由 php 模块提供,该模块在多个流(版本)中可用。

根据您的用例,您可以安装所选模块流的特定配置集:

  • common - 使用 Web 服务器的服务器端脚本的默认配置集。它包括几个广泛使用的扩展。
  • minimal - 这个配置集只安装用于使用 PHP 的脚本的命令行界面,而无需使用 Web 服务器。
  • devel - 这个配置集包括 common 配置集中的软件包,以及用于开发目的的其他软件包。

44.1. 安装 PHP 脚本语言

这部分论述了如何安装 php 模块的所选版本。

流程

  • 要使用默认配置集安装 php 模块流,请使用:

    # yum module install php:stream

    使用您要安装的 PHP 版本替换 stream

    例如,要安装 PHP 7.4:

    # yum module install php:7.4

    默认 common 配置集还会安装 php-fpm 软件包,并预配置用于 Apache HTTP Servernginx 的 PHP。

  • 要安装 php 模块流的特定配置集,请使用:

    # yum module install php:stream/profile

    使用所需版本和 配置集 替换 stream, 使用您要安装的配置集的名称。

    例如,要在没有 web 服务器的情况下安装 PHP 7.4:

    # yum module install php:7.4/minimal

其它资源

44.2. 在 web 服务器中使用 PHP 脚本语言

44.2.1. 在 Apache HTTP 服务器中使用 PHP

在 RHEL 8 中, Apache HTTP Server 可让您将 PHP 作为 FastCGI 进程服务器运行。FastCGI Process Manager(FPM)是一个替代的 PHP FastCGI 守护进程,允许一个网站管理高负载。在 RHEL 8 中,PHP 默认使用 FastCGI Process Manager。

这部分论述了如何使用 FastCGI 进程服务器运行 PHP 代码。

先决条件

流程

  1. 安装 httpd 模块:

    # yum module install httpd:2.4
  2. 启动 Apache HTTP Server:

    # systemctl start httpd

    或者,如果 Apache HTTP Server 已在您的系统中运行,在安装 PHP 后重启 httpd 服务:

    # systemctl restart httpd
  3. 启动 php-fpm 服务:

    # systemctl start php-fpm
  4. 可选:启用这两个服务可在引导时启动:

    # systemctl enable php-fpm httpd
  5. 要获取有关 PHP 设置的信息,请在 /var/www/html/ 目录中使用以下内容创建 index.php 文件:

    echo '<?php phpinfo(); ?>' > /var/www/html/index.php
  6. 要运行 index.php 文件,请将浏览器指向:

    http://<hostname>/
  7. 可选:如果您有特定的要求,请调整配置:

    • /etc/httpd/conf/httpd.conf - 通用 httpd 配置
    • /etc/httpd/conf.d/php.conf - 用于 PHP 的配置 httpd
    • /usr/lib/systemd/system/httpd.service.d/php-fpm.conf - 默认情况下启动 php-fpm 服务 httpd
    • /etc/php-fpm.conf - FPM 主配置
    • /etc/php-fpm.d/www.conf - 默认 www 池配置

例 44.1. 运行一个 "Hello, World!" 使用 Apache HTTP 服务器的 PHP 脚本

  1. /var/www/html/ 目录中为您的项目创建一个 hello 目录:

    # mkdir hello
  2. /var/www/html/hello/ 目录中创建一个包含以下内容的 hello.php 文件:

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

    # systemctl start httpd
  4. 要运行 hello.php 文件,请将浏览器指向:

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

    因此,会显示一个带有 "Hello, World!" 文本的网页。

44.2.2. 在 nginx web 服务器中使用 PHP

这部分论述了如何通过 nginx web 服务器运行 PHP 代码。

先决条件

流程

  1. 安装 nginx 模块流:

    # yum module install nginx:stream

    使用您要安装的 nginx 版本替换 stream

    例如,要安装 nginx 版本 1.18:

    # yum module install nginx:1.18
  2. 启动 nginx 服务器:

    # systemctl start nginx

    或者,如果 nginx 服务器已在您的系统中运行,在安装 PHP 后重启 nginx 服务:

    # systemctl restart nginx
  3. 启动 php-fpm 服务:

    # systemctl start php-fpm
  4. 可选:启用这两个服务可在引导时启动:

    # systemctl enable php-fpm nginx
  5. 要获取有关 PHP 设置的信息,请在 /usr/share/nginx/html/ 目录中使用以下内容创建 index.php 文件:

    echo '<?php phpinfo(); ?>' > /usr/share/nginx/html/index.php
  6. 要运行 index.php 文件,请将浏览器指向:

    http://<hostname>/
  7. 可选:如果您有特定的要求,请调整配置:

    • /etc/nginx/nginx.conf - nginx 主配置
    • /etc/nginx/conf.d/php-fpm.conf - FPM 配置 nginx
    • /etc/php-fpm.conf - FPM 主配置
    • /etc/php-fpm.d/www.conf - 默认 www 池配置

例 44.2. 运行一个 "Hello, World!" 使用 nginx 服务器的 PHP 脚本

  1. /usr/share/nginx/html/ 目录中为您的项目创建一个 hello 目录:

    # mkdir hello
  2. /usr/share/nginx/html/hello/ 目录中创建一个包含以下内容的 hello.php 文件:

    # <!DOCTYPE html>
    <html>
    <head>
    <title>Hello, World! Page</title>
    </head>
    <body>
    <?php
        echo 'Hello, World!';
    ?>
    </body>
    </html>
  3. 启动 nginx 服务器:

    # systemctl start nginx
  4. 要运行 hello.php 文件,请将浏览器指向:

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

    因此,会显示一个带有 "Hello, World!" 文本的网页。

44.3. 使用命令行界面运行 PHP 脚本

PHP 脚本通常使用 web 服务器运行,但也可以使用命令行界面运行。

如果您只想使用命令行运行 php 脚本,请安装 php 模块流的 minimal 配置集。

详情请查看 第 44.1 节 “安装 PHP 脚本语言”

先决条件

流程

  1. 在文本编辑器中创建 filename.php 文件

    filename 替换为您的文件名称。

  2. 从命令行执行创建的 filename.php 文件:

    # php filename.php

例 44.3. 运行一个 "Hello, World!" 使用命令行界面的 PHP 脚本

  1. 使用文本编辑器创建带有以下内容的 hello.php 文件:

    <?php
        echo 'Hello, World!';
    ?>
  2. 从命令行执行 hello.php 文件:

    # php hello.php

    因此,"Hello, World!"会被打印。

44.4. 其它资源

  • httpd(8) - 包含命令行选项的完整列表的 httpd 服务的手册页。
  • httpd.conf(5) - httpd 配置的说明 httpd 配置文件结构和位置的手册页。
  • nginx(8) - 包含命令行选项和信号列表的 nginx web 服务器手册页。
  • php-fpm(8) - PHP FPM 手册页描述其命令行选项和配置文件的完整列表。