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. 重新启动 Apache2PHP 服务:

    $ 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

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

配置 PHP 7.4

现在 Apache2PHP 已经安装完毕,您可能需要配置 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 脚本和应用程序,而无需像 ApacheNginx 这样的常用 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。