如何在 Ubuntu 22.04 上安装 PHP 8.1 并设置本地开发环境

此教程的早期版本是由 alenaholligan编写的。

介绍

PHP是一个流行的服务器脚本语言,以创建动态和交互式网页而闻名,使用您所选择的语言创建和运行是学习编程的第一步。

本教程将指导您在 Ubuntu 上安装 PHP 8.1 并通过命令行设置本地编程环境,您还将安装依赖管理器 Composer,并通过运行脚本来测试您的安装。

前提条件

要完成本教程,您需要一个本地或虚拟机,安装了Ubuntu 22.04 并具有管理访问和与该机器的互联网连接,您可以通过 Ubuntu 发布页面下载此操作系统。

步骤 1 - 设置 PHP 8.1

您将在命令行上完成安装和设置,这是与您的计算机交互的非图形方式,也就是说,而不是点击按钮,您将键入文本并通过文本收到您的计算机的反馈。

命令行,也被称为壳或终端,可以帮助您修改和自动化您每天在计算机上执行的许多任务,并且是软件开发人员必不可少的工具。

在Ubuntu上,你可以通过点击屏幕的左上角的Ubuntu图标来找到终端应用程序,然后在搜索栏中键入终端

Ubuntu terminal

<$>[note] 注: Ubuntu 22.04 配备了 PHP 8.1 在其存储库中,这意味着如果您尝试在没有指定版本的情况下安装 PHP,它将使用 8.1。

如果你想在 Ubuntu 22.04 服务器上使用不同的 PHP 版本,你可以使用 phpenv 项目来安装和管理不同的版本。

运行以下命令来更新可用的包列表,然后安装 PHP 8.1:

1sudo apt update
1sudo apt install --no-install-recommends php8.1

不安装推荐旗帜将确保不安装其他软件包,如Apache Web 服务器。

通过以下命令检查您的PHP版本信息:

1php -v

你会得到这样的输出:

1[secondary_label Output]
2PHP 8.1.2 (cli) (built: Apr 7 2022 17:46:26) (NTS)
3Copyright (c) The PHP Group
4Zend Engine v4.1.2, Copyright (c) Zend Technologies
5    with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies

除了PHP本身,您可能还需要安装一些额外的PHP模块,您可以使用这个命令来安装额外的模块,以您想要安装的包代替PACKAGE_NAME:

1sudo apt-get install php8.1-PACKAGE_NAME

您还可以一次安装多个软件包,以下是您最有可能想要安装的最常见模块的一些建议:

1sudo 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 - 命令解释器,用来测试 PHP 脚本从壳或执行一般 shell 脚本任务
  • php8.1-common - 文档,示例和常见模块为 PHP
  • php8.1-mysql - 用来与 MySQL 数据库
  • php8.1-zip - 用来与压缩文件
  • php8.1-gd - 用来与 images
  • php8.1-mbstring - 用来管理非 ASCII 字符串
  • php8.1-curl - 让你在 PHP
  • php8.1-xml - 用来与 XML 数据_M

与 Apache 相关的 PHP 配置存储在 /etc/php/8.1/apache2/php.ini. 您可以使用以下命令列出所有加载的 PHP 模块:

1php -m

您已经安装了PHP并验证了您正在运行的版本,您还安装了任何需要的PHP模块,并能够列出您已加载的模块。

您现在可以开始使用PHP,但您可能希望使用各种库快速构建PHP应用程序。

步骤 2 — 设置成份器来管理依赖性(可选)

库是一个代码的集合,可以帮助您解决常见问题,而无需自己写一切. 由于有许多库可用,使用依赖管理器将帮助您管理多个库,因为您在写PHP时变得更有经验。

Composer是PHP中的依赖管理工具,它允许您声明您的项目依赖的库,并将管理安装和更新这些包。

虽然类似,但Composer不是一个包管理器,在同一个意义上是yumapt。它处理或库,但它在每个项目的基础上管理它们,安装它们在您的项目内的目录(例如供应商)中。

这个想法并不新鲜,而Composer的灵感源于Node的npm和Ruby的bundler

假设:

  • 您有一个依赖于多个库的项目。
  • 其中一些库依赖于其他库。

作曲家:

  • 允许您声明您所依赖的库。
  • 查找哪些版本的软件包可以和需要安装,并通过将其下载到您的项目中安装它们。
  • 允许您在一个命令中更新所有依赖性。
  • 允许您查看基本使用章节,了解有关声明依赖性的更多细节。

要安装 Composer,请先下载安装程序,使用以下‘curl’命令:

1curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php

接下来,检查下载的安装程序是否匹配了 Composer Public Keys / Signatures页面上发现的最新安装程序的 SHA-384 哈希。

1HASH=`curl -sS https://composer.github.io/installer.sig`

要验证获得的值,您可以运行:

1echo $HASH
1[secondary_label Output]
255ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae

现在,按照Composer 下载页面提供的下面的PHP代码执行,以验证安装脚本是否安全运行:

1php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

你会看到以下的输出:

1[label Output]
2Installer verified

如果输出说安装程序破坏,你需要再次下载安装脚本并重复检查你是否使用正确的哈希,然后重复验证过程。

要在全球范围内安装composer,请使用以下命令,下载并安装composer作为名为composer的全系统命令,在/usr/local/bin下:

1sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer

您将收到类似于此的输出:

1[secondary_label Output]
2All settings correct for using Composer
3Downloading...
4
5Composer (version 2.3.5) successfully installed to: /usr/local/bin/composer
6Use it: php /usr/local/bin/composer

要测试您的安装,运行:

1composer

您将收到如下的输出:

 1[secondary_label Output]
 2   ______
 3  / ____/___ ____ ___ ____ ____ ________ _____
 4 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
 5/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
 6\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
 7                    /_/
 8Composer version 2.3.5 2022-04-13 16:43:00
 9
10Usage:
11  command [options] [arguments]
12
13Options:
14  -h, --help Display help for the given command. When no command is given display help for the list command
15  -q, --quiet Do not output any message
16  -V, --version Display this application version
17      --ansi|--no-ansi Force (or disable --no-ansi) ANSI output
18  -n, --no-interaction Do not ask any interactive question
19      --profile Display timing and memory usage information
20      --no-plugins Whether to disable plugins.
21      --no-scripts Skips the execution of all scripts defined in composer.json file.
22  -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory.
23      --no-cache Prevent use of the cache
24  -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
25. . .

这验证了 Composer 已成功安装在您的系统上,并且在整个系统中可用。

<$>[注] 注: 如果您希望在您的服务器上托管的每个项目都有单独的 Composer 执行程序,则可以本地安装,每个项目的基础上。

要做到这一点,请使用命令 php /tmp/composer-setup.php 没有任何参数. 此命令将在当前目录中生成一个 composer.phar 文件,您可以使用 php composer.phar. <$>

步骤 3 — 在 PHP 项目中使用 Composer

作为最后一步,您可以选择使用composer init初始化您的项目。这将创建composer.json文件,以管理您的项目依赖性。初始化项目还允许您定义项目细节,如作者和许可证,并使用Composer的自动加载功能(https://getcomposer.org/doc/01-basic-usage.md# autoloading)。

首先,创建一个目录,并将其更改为包含您的项目文件:

1cd ~
2mkdir example-project
3cd example-project

现在开始你的项目:

1composer init

运行此命令将启动安装向导. 您在向导中输入的详细信息可以稍后更新,所以请放心离开默认值,只需按ENTER。 如果您尚未准备好安装任何依赖,您可以选择

 1[secondary_label Output]
 2
 3  Welcome to the Composer config generator  
 4
 5This command will guide you through creating your composer.json config.
 6
 7Package name (<vendor>/<name>) [sammy/example-project]:  sammy/project1
 8Description []:
 9Author [n to skip]: Sammy <sammy@digitalocean.com>
10Minimum Stability []: 
11Package Type (e.g. library, project, metapackage, composer-plugin) []: project
12License []: 
13
14Define your dependencies.
15
16Would you like to define your dependencies (require) interactively [yes]? no
17Would you like to define your dev dependencies (require-dev) interactively [yes]? no
18
19Add PSR-4 autoload mapping? Maps namespace "Sammy\Project1" to the entered relative path. [src/, n to skip]: n
20
21{
22    "name": "sammy/project1",
23    "type": "project",
24    "authors": [
25        {
26            "name": "Sammy",
27            "email": "[email protected]"
28        }
29    ],
30    "require": {}
31}
32
33Do you confirm generation [yes]? yes

在您确认生成之前,您将看到composer.json文件的样本,它将被引导程序创建. 如果一切看起来很好,您可以确认的默认值。

第一次定义任何依赖时,Composer 会创建一个供应商文件夹。 所有依赖都安装在这个供应商文件夹中。Composer 还会创建一个composer.lock文件。 此文件指定了您项目中使用的每个依赖和次依赖的 **准确版本。

<$>[note] 注: 供应商文件夹不应该与您的版本控制系统(VCS)联系在一起。供应商文件夹只包含您从其他供应商安装的软件包。这些单独的供应商将在自己的版本控制系统中保留自己的代码。您只应该跟踪您写的代码。而不是发送供应商文件夹,您只需要发送您的composer.jsoncomposer.lock文件。您可以在如何使用Git:参考指南中了解更多有关忽略特定文件的信息。

现在你已经安装了 PHP 和使用 Composer 管理项目依赖的方法,你已经准备好测试你的环境。

步骤三:测试PHP环境

要测试您的系统是否正确配置为PHP,您可以创建并运行一个基本的PHP脚本。

1nano hello.php

这将打开一个空的文件. 将以下文本,即有效的PHP代码,放入文件中:

1[label hello.php]
2<?php
3echo 'Hello World!';
4?>

一旦你添加了文本,保存并关闭文件. 您可以通过握住CTRL键并按x键来做到这一点. 然后选择y并按ENTER

现在你可以测试,以确保PHP正确处理你的脚本。输入php,告诉PHP处理文件,然后是文件名称:

1php hello.php

如果 PHP 被正确处理,你只会看到引文中的字符:

1[secondary_label Output]
2Hello World!

PHP 已经成功处理了脚本,这意味着您的 PHP 环境已成功安装,您已经准备好继续您的编程之旅。

结论

此时,您已在 Ubuntu 系统上设置了 PHP 8.1 编程环境,并可以开始编码项目。

在开始编码之前,您可能需要设置一个集成开发环境(IDE)。虽然有许多IDEs可供选择,但 VS Code是一个流行的选择,因为它提供了许多强大的功能,如图形界面,语法突出和调试。

當您的本地機器準備好進行軟體開發時,您可以依照 How To Work With Strings in PHP繼續學習更多關於PHP的編碼。

Published At
Categories with 技术
comments powered by Disqus