如何在 Ubuntu 22.04 上安装 PHP 8.1 并设置本地开发环境
本教程的上一版本由 alenaholligan 编写。
介绍
PHP 是一种流行的服务器脚本语言,以创建动态和交互式网页而闻名。 使用您选择的语言开始并运行是学习编程的第一步。
本教程将指导您在 Ubuntu 上安装 PHP 8.1 并通过命令行设置本地编程环境。 您还将安装一个依赖管理器 Composer,并通过运行脚本来测试您的安装。
先决条件
要完成本教程,您需要一台安装了 Ubuntu 22.04 的本地或虚拟机,并且具有管理访问权限以及与该机器的 Internet 连接。 您可以通过 Ubuntu 发布页面 下载此操作系统。
第 1 步 — 设置 PHP 8.1
您将在命令行上完成安装和设置,这是一种与计算机交互的非图形方式。 也就是说,您将输入文本并通过文本从计算机接收反馈,而不是单击按钮。
命令行,也称为 shell 或终端,可以帮助您修改和自动化您每天在计算机上执行的许多任务,并且是软件开发人员必不可少的工具。 有许多终端命令需要学习,可以让你做更强大的事情。 文章 An Introduction to the Linux Terminal 可以让您更好地了解终端。
在 Ubuntu 上,您可以通过单击屏幕左上角的 Ubuntu 图标并在搜索栏中输入 terminal
来找到终端应用程序。 单击终端应用程序图标将其打开。 或者,您可以同时按下键盘上的 CTRL
、ALT
和 T
键以自动打开终端应用程序。
注意: Ubuntu 22.04 在其存储库中附带 PHP 8.1。 这意味着如果您尝试安装没有指定版本的 PHP,它将使用 8.1。
如果你想在你的 Ubuntu 22.04 服务器上使用不同版本的 PHP,你可以使用 phpenv 项目 来安装和管理不同的版本。
运行以下命令来更新可用软件包列表,然后安装 PHP 8.1:
sudo apt update
sudo apt install --no-install-recommends php8.1
--no-install-recommends
标志将确保不安装其他软件包,例如 Apache Web 服务器。
使用以下命令检查您的 PHP 版本信息:
php -v
您将收到如下输出:
OutputPHP 8.1.2 (cli) (built: Apr 7 2022 17:46:26) (NTS) Copyright (c) The PHP Group Zend Engine v4.1.2, Copyright (c) Zend Technologies with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies
除了 PHP 本身,您可能还想安装一些额外的 PHP 模块。 您可以使用此命令安装其他模块,将 PACKAGE_NAME
替换为您要安装的软件包:
sudo apt-get install php8.1-PACKAGE_NAME
您还可以一次安装多个软件包。 以下是您最可能要安装的最常见模块的一些建议:
sudo apt-get install -y php8.1-cli php8.1-common php8.1-mysql php8.1-zip php8.1-gd php8.1-mbstring php8.1-curl php8.1-xml php8.1-bcmath
此命令将安装以下模块:
php8.1-cli
- 命令解释器,用于从 shell 测试 PHP 脚本或执行一般 shell 脚本任务php8.1-common
- PHP 的文档、示例和常用模块php8.1-mysql
- 用于处理 MySQL 数据库php8.1-zip
- 用于处理压缩文件php8.1-gd
- 用于处理图像php8.1-mbstring
- 用于管理非 ASCII 字符串php8.1-curl
- 让您在 PHP 中发出 HTTP 请求php8.1-xml
- 用于处理 XML 数据php8.1-bcmath
- 使用精度浮点数
Apache 相关的 PHP 配置存储在 /etc/php/8.1/apache2/php.ini
中。 您可以使用以下命令列出所有已加载的 PHP 模块:
php -m
您已经安装了 PHP 并验证了您正在运行的版本。 您还安装了所有必需的 PHP 模块,并且能够列出您已加载的模块。
您现在可以开始使用 PHP,但您可能希望使用各种库来快速构建 PHP 应用程序。 在测试您的 PHP 环境之前,首先为您的项目设置一个依赖项管理器。
第 2 步 — 为依赖管理设置 Composer(可选)
库是代码的集合,可以帮助您解决常见问题,而无需自己编写所有内容。 由于有许多库可用,使用依赖管理器将帮助您管理多个库,因为您在编写 PHP 方面变得更有经验。
Composer 是 PHP 中用于依赖管理的工具。 它允许您声明您的项目所依赖的库,并将管理安装和更新这些包。
尽管相似,但 Composer 与 yum
或 apt
的意义不同。 它处理“包”或库,但它基于每个项目管理它们,将它们安装在一个目录中(例如 vendor
) 在你的项目中。 默认情况下,它不会全局安装任何东西。 因此,它是一个 依赖管理器。 但是,为了方便起见,它确实通过 global
命令支持全局项目。
这个想法并不新鲜,Composer 受到 Node 的 npm
和 Ruby 的 bundler
的强烈启发。
认为:
- 您有一个依赖于多个库的项目。
- 其中一些库依赖于其他库。
作曲家:
- 使您能够声明所依赖的库。
- 找出可以并且需要安装哪些软件包的哪些版本,并通过将它们下载到您的项目中来安装它们。
- 使您能够在一个命令中更新所有依赖项。
- 使您能够查看基本用法一章以了解有关声明依赖项的更多详细信息。
要安装 Composer,首先使用以下 curl
命令下载安装程序:
curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php
接下来,验证下载的安装程序是否与在 Composer 公钥/签名 页面上找到的最新安装程序的 SHA-384 哈希匹配。 为了便于验证步骤,您可以使用以下命令以编程方式从 Composer 页面获取最新的哈希并将其存储在 shell 变量中:
HASH=`curl -sS https://composer.github.io/installer.sig`
要验证获得的值,您可以运行:
echo $HASH
Output55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae
现在执行 Composer 下载页面 中提供的以下 PHP 代码,以验证安装脚本可以安全运行:
php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
您将看到以下输出:
输出
Installer verified
如果输出显示 Installer corrupt
,您需要再次下载安装脚本并仔细检查您使用的哈希是否正确。 然后,重复验证过程。 当您拥有经过验证的安装程序时,您可以继续。
要全局安装 composer
,请使用以下命令下载并安装 Composer 作为系统范围的命令,名为 composer
,位于 /usr/local/bin
下:
sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
您将收到与此类似的输出:
OutputAll settings correct for using Composer Downloading... Composer (version 2.3.5) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer
要测试您的安装,请运行:
composer
您将收到如下输出:
Output ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 2.3.5 2022-04-13 16:43:00 Usage: command [options] [arguments] Options: -h, --help Display help for the given command. When no command is given display help for the list command -q, --quiet Do not output any message -V, --version Display this application version --ansi|--no-ansi Force (or disable --no-ansi) ANSI output -n, --no-interaction Do not ask any interactive question --profile Display timing and memory usage information --no-plugins Whether to disable plugins. --no-scripts Skips the execution of all scripts defined in composer.json file. -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory. --no-cache Prevent use of the cache -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug . . .
这将验证 Composer 是否已成功安装在您的系统上并且在系统范围内可用。
注意: 如果您希望在服务器上托管的每个项目都有单独的 Composer 可执行文件,您可以在本地安装它,基于每个项目。 当您的系统用户无权在系统范围内安装软件时,此方法也很有用。
为此,请使用不带任何参数的命令 php /tmp/composer-setup.php
。 此命令将在您的当前目录中生成一个 composer.phar
文件,您可以使用 php composer.phar
运行该文件。
第 3 步 — 在 PHP 项目中使用 Composer
作为最后一步,您可以选择使用 composer init
初始化您的项目。 这将创建 composer.json
文件来管理您的项目依赖项。 初始化项目还将让您定义项目详细信息,例如作者和许可证,并使用 Composer 的自动加载功能 。 您可以现在定义依赖项或稍后添加它们。
首先,创建一个目录并将其更改为包含您的项目文件:
cd ~ mkdir example-project cd example-project
现在初始化您的项目:
composer init
运行此命令将启动设置向导。 您在向导中输入的详细信息可以稍后更新,因此请随时保留默认设置,只需按 ENTER
。 如果您还没有准备好安装任何依赖项,您可以选择 no
。 在每个提示符处输入您的详细信息:
Output Welcome to the Composer config generator This command will guide you through creating your composer.json config. Package name (<vendor>/<name>) [sammy/example-project]: sammy/project1 Description []: Author [n to skip]: Sammy <sammy@digitalocean.com> Minimum Stability []: Package Type (e.g. library, project, metapackage, composer-plugin) []: project License []: Define your dependencies. Would you like to define your dependencies (require) interactively [yes]? no Would you like to define your dev dependencies (require-dev) interactively [yes]? no Add PSR-4 autoload mapping? Maps namespace "Sammy\Project1" to the entered relative path. [src/, n to skip]: n { "name": "sammy/project1", "type": "project", "authors": [ { "name": "Sammy", "email": "sammy@digitalocean.com" } ], "require": {} } Do you confirm generation [yes]? yes
在确认生成之前,您将看到向导将创建的 composer.json
文件的示例。 如果一切正常,您可以确认 yes
的默认值。 如果需要重新开始,请选择 no
。
第一次定义任何依赖项时,Composer 将创建一个 vendor
文件夹。 所有依赖项都安装到此 vendor
文件夹中。 Composer 还会创建一个 composer.lock
文件。 此文件指定项目中使用的每个依赖项和子依赖项的 exact 版本。 这确保了运行程序的任何机器都将使用每个包的完全相同的版本。
注意: 永远不要将 vendor
文件夹提交到您的版本控制系统 (VCS)。 vendor
文件夹仅包含您从其他供应商处安装的软件包。 这些单独的供应商将在自己的版本控制系统中维护自己的代码。 您应该只跟踪您编写的代码。 无需提交 vendor
文件夹,您只需提交 composer.json
和 composer.lock
文件。 您可以在 如何使用 Git:参考指南 中了解有关忽略特定文件的更多信息。
现在您已经安装了 PHP,并且可以使用 Composer 管理您的项目依赖项,您已经准备好测试您的环境了。
第 3 步 — 测试 PHP 环境
要测试您的系统是否为 PHP 正确配置,您可以创建并运行一个基本的 PHP 脚本。 调用此脚本 hello.php
:
nano hello.php
这将打开一个空白文件。 将以下文本(有效的 PHP 代码)放入文件中:
你好.php
<?php echo 'Hello World!'; ?>
添加文本后,保存并关闭文件。 您可以通过按住 CTRL
键并按下 x
键来执行此操作。 然后选择y
并按ENTER
。
现在您可以进行测试以确保 PHP 正确处理您的脚本。 输入 php
告诉 PHP 处理文件,后跟文件名:
php hello.php
如果 PHP 处理正确,您将只看到引号内的字符:
OutputHello World!
PHP 已成功处理脚本,这意味着您的 PHP 环境已成功安装,您已准备好继续您的编程之旅。
结论
此时,您已经在 Ubuntu 系统上设置了 PHP 8.1 编程环境,可以开始编码项目了。
在开始编码之前,您可能需要设置一个集成开发环境 (IDE)。 虽然有许多 IDE 可供选择,但 VS Code 是一个受欢迎的选择,因为它提供了许多强大的功能,例如图形界面、语法高亮和调试。
在您的本地机器准备好进行软件开发后,您可以按照 如何在 PHP 中使用字符串 继续了解有关 PHP 编码的更多信息。