PHP 简介

PHP 已经走过了漫长的道路。它在 Node.js 之前就存在了,由 Rasmus Lerdorf 于 1994 年创建。它最初代表的是 Personal Home Page。PHP 的参考实现现在由 PHP 官方团队( https://www.php.net/ )维护。PHP 最初被开发为一种模板语言,允许我们将 HTML 与 PHP 代码本身混合在一起,就像现在的 Twig( https://twig.symfony.com/ )和 Pug( https://pugjs.org/ )所做的那样。

现在,PHP 不仅仅是一种模板语言。多年来,它已经发展成为一种通用的脚本语言和面向对象的语言,尤其适用于服务器端 Web 开发。您仍然可以将其用于模板,但我们应该在现代 PHP 开发中充分利用其全部功能。如果您想了解 PHP 还能做什么,请访问 https://www.google.com/search?q=https://www.php.net/manual/en/intro-whatcando.php。

在撰写本书时,PHP 的当前稳定版本是 7.4.x。如果您刚开始使用 PHP,请从 PHP 7.4 开始。如果您使用的是 PHP 7.2 或 7.3,则应考虑将其升级到 PHP 7.4,因为它包含多个错误修复。有关此版本中更改的更多信息,请访问 https://www.php.net/ChangeLog-7.php。

在本书中,我们将指导您如何在支持 Apache2 的 Ubuntu 上安装或升级到 PHP 7.4。让我们开始吧!

安装或升级 PHP

如果您使用的是 macOS,请使用本指南:https://phptherightway.com/mac_setup。如果您使用的是 Windows,请使用本指南:https://www.google.com/search?q=https://phptherightway.com/windows_setup。

我们使用的是 Apache2 HTTP 服务器,但如果您的机器上已经安装了 Nginx HTTP 服务器,也可以使用它。现在,请按照以下简单步骤安装 PHP:

  1. 运行以下命令以更新您的 Ubuntu 服务器上的本地软件包并安装 Apache2:

    $ sudo apt update
    $ sudo apt install apache2
  2. 安装 Apache2 后,使用 -v 选项进行验证:

    $ apache2 -v
    Server version: Apache/2.4.41 (Ubuntu)
    Server built: 2019-08-14T14:36:32

    您可以使用以下命令停止、启动和启用 Apache2 服务,以便它在服务器启动时始终启动:

    $ sudo systemctl stop apache2
    $ sudo systemctl start apache2
    $ sudo systemctl enable apache2

    您可以使用以下命令检查 Apache2 的状态:

    $ sudo systemctl status apache2

    您应该始终在终端中获得 active (running) 的输出:

    apache2.service - The Apache HTTP Server
      Loaded: loaded (/lib/systemd/system/apache2.service; enabled;
      vendor preset: enabled)
      Active: active (running) since Thu 2020-08-06 13:17:25 CEST; 52min
      ago
    //...
  3. 运行以下命令安装 PHP 7.4:

    $ sudo apt update
    $ sudo apt install php
  4. 您还应该安装开发 PHP 应用程序时可能需要的 PHP 7.4 相关模块和扩展:

    $ sudo apt install -y php7.4-{bcmath,bz2,curl,gd,intl,json,mbstring,xml,zip,mysql}
  5. 禁用 PHP 7.3(如果您使用的是 PHP 7.3),然后启用 PHP 7.4:

    $ sudo a2dismod php7.3
    $ sudo a2enmod php7.4

    如果您是第一次安装 PHP,则不必禁用旧版本。如果要卸载 PHP 及其所有相关模块,可以使用以下命令:

    $ sudo apt-get purge 'php*'
  6. 重新启动 Apache2 和 PHP 服务:

    $ sudo service apache2 restart
  7. 现在,您可以使用以下命令验证刚刚安装的 PHP:

    $ php -v

您应该获得以下版本信息:

PHP 7.4.8 (cli) (built: Jul 13 2020 16:46:22) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.8, Copyright (c), by Zend Technologies

现在您已经安装了 Apache2 和 PHP 7.4,接下来应该做的是配置 PHP。我们将在下一节中进行此操作。

配置 PHP 7.4

现在 Apache2 和 PHP 已经安装完毕,您可能需要配置 PHP,以便根据您的 PHP 应用程序的需求来使用它。默认的 PHP 配置文件位于 /etc/php/7.4/apache2/php.ini,请按照以下步骤配置您的 PHP 7.4 版本:

  1. 运行以下命令编辑或配置 PHP 7.4:

    $ sudo nano /etc/php/7.4/apache2/php.ini

    您可能需要更改上传文件的默认允许大小 upload_max_filesize:

    upload_max_filesize = 2M

    您可以在 https://www.google.com/search?q=http://php.net/upload-max-filesize 找到有关此配置的更多信息。

    对于 PHP 应用程序来说,2 MB 的最大上传文件大小可能被认为太小。因此,请继续根据您的需要进行更改,如下所示:

    upload_max_filesize = 32M

    以下是一些其他需要考虑的重要行 /PHP 指令:

    post_max_size = 48M
    memory_limit = 256M
    max_execution_time = 600

    您可以在 https://www.php.net/manual/en/ini.core.php 找到有关上述 PHP 指令和其他用于配置 PHP 的指令的更多信息。

  2. 重新启动 Apache 以使上述修改后的 PHP 设置生效:

    $ sudo service apache2 restart

PHP 7.4 功能强大。如果您不想在本地开发机器上安装 Apache 服务器,您可以仅安装 PHP 并使其为您的开发站点提供服务,而不依赖于 Apache 服务器。在下一节中,您将学习如何在没有 Apache 服务器的情况下使用 PHP 7.4。

使用内置 PHP Web 服务器运行 PHP 应用

从 PHP 5.4 开始,您可以使用内置的 PHP Web 服务器运行 PHP 脚本和应用程序,而无需像 Apache 或 Nginx 这样的常用 Web 服务器。只要您安装了 PHP 7.4,就可以跳过前面 Apache 的安装步骤。要启动 PHP 服务器,只需从您的项目根目录打开终端并运行以下命令:

$ php -S 0.0.0.0:8181

如果您想从特定的文档根目录(例如项目目录 www 中的 public 目录)启动应用程序,请执行以下操作:

$ cd ~/www
$ php -S localhost:8181 -t public

让我们创建一个经典的 "Hello World" 示例,该示例将由这个内置的 PHP Web 服务器提供,以查看是否一切设置正确:

  1. 在一个 PHP 文件中创建一个简单的 "Hello World" 消息页面,如下所示:

    // public/index.php
    <?php
    echo 'Hello world!';
  2. 导航到您的项目目录,并使用前面的命令通过内置的 PHP Web 服务器启动它。终端应显示以下信息:

    [Sun Mar 22 09:12:37 2020] PHP 7.4.4 Development Server
    (http://localhost:8181) started
  3. 现在,在您的浏览器中加载 localhost:8181。您应该在屏幕上看到 Hello world!,没有任何错误。

    如果您想了解有关此内置 Web 服务器的更多信息,请访问 https://www.php.net/features.commandline.webserver。

接下来,您将学习如何掌握一些 PHP 标准。您还将了解什么是 HTTP 消息以及为什么现代 PHP 应用程序需要 PSR。