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

引言

PHP是一种流行的服务器脚本语言,用于创建动态和交互式web页面。开始使用你选择的语言是学习编程的第一步。
本教程将指导您在Ubuntu上安装PHP 8.1,并通过命令行设置本地编程环境。您还将安装依赖管理器Composer,并通过运行脚本来测试您的安装。

前期准备

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

第1步 设置PHP 8.1

你将在命令行中完成安装和设置,这是一种与计算机交互的非图形化方式。也就是说,你不需要点击按钮,而是需要输入文本,并通过文本从计算机接收反馈。
命令行,也称为shell或终端,可以帮助您修改和自动化您每天在计算机上执行的许多任务,是软件开发人员的一个重要工具。要学习许多终端命令,它们可以让你做更强大的事情。Linux终端简介这篇文章可以让您更好地适应终端。
在Ubuntu上,你可以通过点击屏幕左上角的Ubuntu图标,在搜索栏中输入terminal来找到Terminal应用程序。单击终端应用程序图标来打开它。或者,您可以同时按下键盘上的CTRLALTT键来自动打开终端应用程序。

注意: 在Ubuntu 22.04仓库中附带了PHP 8.1。这意味着如果您尝试安装没有指定PHP版本情况下,它将默认使用PHP 8.1版本。

如果您想在您的Ubuntu 22.04服务器上使用不同版本的PHP,您可以使用phpenv项目来安装和管理不同版本的PHP。
运行以下命令更新可用包列表,然后安装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)ight (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologieswith 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不是与yumapt相同意义上的包管理器。它处理包或库,但它以每个项目为基础管理它们,将它们安装在一个目录中(例如:vendor)。默认情况下,它不会全局安装任何东西。因此,它是一个依赖管理器。但是,为了方便,它通过global命令支持全局项目。
这个想法并不新鲜,Composer深受Node的npm和Ruby的bundler的启发。

设想:

  • 你有一个项目依赖于几个库。
  • 其中一些库依赖于其他库。

Composer:

  • 允许你声明所依赖的库。
  • 找出哪些包的版本可以并且需要安装,并通过下载它们到你的项目中来安装它们。
  • 使您能够在一个命令中更新所有依赖项。
  • 允许您查看基本用法章节以了解更多关于声明依赖项的详细信息。

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

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

接下来,验证下载的安装程序与Composer Public Keys / Signatures页面上找到的最新安装程序的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,在/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:00Usage: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。在每个提示框中输入你的详细信息:

OutputWelcome 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]? noAdd 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文件。此文件指定了项目中使用的每个依赖项和子依赖项的确切版本。这可以确保运行程序的任何机器上的每个包都使用完全相同的版本。

注意: vendor文件夹永远不应该提交到你的版本控制系统(VCS)。vendor文件夹只包含您从其他供应商安装的软件包。这些供应商将在自己的版本控制系统中维护自己的代码。您应该只跟踪您编写的代码。你只需要提交你的composer. js文件,而不是提交vendor文件夹。composer.jsoncomposer.lock文件。

现在你已经安装了PHP,并且可以使用Composer管理项目依赖项,现在可以测试你的环境了。

第4步 测试PHP环境

要测试您的系统是否正确配置了PHP,您可以创建并运行一个基本的PHP脚本。将这个脚本命名为hello.php

sudo nano hello.php

这将打开一个空白文件。将以下文本(有效的PHP代码)放入文件中:

hello.php

<?php
echo 'Hello World!';
?>

一旦添加了文本,保存并关闭文件。你可以按住CTRL键,按下x键。然后选择yENTER
现在您可以测试,以确保PHP正确地处理您的脚本。键入php来告诉php处理文件,然后是文件的名称:

php hello.php

如果PHP处理正确,您将只看到引号内的字符:

OutputHello World!

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

总结

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/50209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8.4 【C语言】通过指针引用字符串

8.4.1 字符串的引用方式 在C程序中&#xff0c;字符串是存放在字符数组中的。想引用一个字符串&#xff0c;可以用以下两种方法。 &#xff08;1&#xff09;用字符数组存放一个字符串&#xff0c;可以通过数组名和下标引用字符串中一个字符&#xff0c;也可以通过数组名和格…

neo4j

UNWIND 将列表里的值展开 CREATE (N0:Person {name: Anders}) CREATE (N1:Person {name: Becky}) CREATE (N2:Person {name: Cesar}) CREATE (N3:Person {name: Dilshad}) CREATE (N4:Person {name: George}) CREATE (N5:Person {name: Filipa})CREATE (N0)-[:KNOWS]->(N3)…

spark基于HNSW向量检索

参考文档&#xff1a;https://talks.anghami.com/blazing-fast-approximate-nearest-neighbour-search-on-apache-spark-using-hnsw/ HNSW参数调优文档&#xff1a;https://github.com/nmslib/hnswlib/blob/master/ALGO_PARAMS.md spark 运行HNSW向量检索分为以下三步 1 创建H…

VUE初识

vue是一个用于构建用户界面的渐进是框架 优点&#xff0c;大大提高开发效率 缺点&#xff0c;需要记忆语法规则 构建用户界面 创建vue实例&#xff0c;初始化渲染 1&#xff1a;准备容启 2&#xff1a;引包&#xff0c;开发版本和生产版本 3.创建vue实例 new Vue&#x…

mybatis plus 控制台和日志文件中打印sql配置

1 控制台输出sql 配置mybatis-plus的日志实现类为StdOutImpl&#xff0c;该实现类中打印日志是通过System.out.println(s)的方式来打印日志的 mybatis-plus:configuration:log-impl: org.apache.imbatis.logging.stdout.StdOutImpl2 日志文件中写入sql 日志文件中输入sql需要…

分布式事务(4):两阶段提交协议与三阶段提交区别

1 两阶段提交协议 两阶段提交方案应用非常广泛&#xff0c;几乎所有商业OLTP数据库都支持XA协议。但是两阶段提交方案锁定资源时间长&#xff0c;对性能影响很大&#xff0c;基本不适合解决微服务事务问题。 缺点&#xff1a; 如果协调者宕机&#xff0c;参与者没有协调者指…

Solidity 合约安全,常见漏洞 (下篇)

Solidity 合约安全&#xff0c;常见漏洞 &#xff08;下篇&#xff09; Solidity 合约安全&#xff0c;常见漏洞 &#xff08;上篇&#xff09; 不安全的随机数 目前不可能用区块链上的单一交易安全地产生随机数。区块链需要是完全确定的&#xff0c;否则分布式节点将无法达…

Grafana 安装配置教程

Grafana 安装配置教程 一、介绍二、Grafana 安装及配置2.1 下载2.2 安装2.2.1 windows安装 - 图形界面2.2.2 linux安装 - 安装脚本 三、Grafana的基本配置3.1 登录3.2 Grafana设置中文 四、grafana基本使用 一、介绍 Grafana是一个通用的可视化工具。对于Grafana而言&#xff0…

华为OD-分积木/分苹果

题目描述 哥哥弟弟分一堆积木&#xff0c;每块积木重量不同。弟弟要求平分两组&#xff0c;每组数量可以不同但总重量必须相等。 然而弟弟只会二进制并且加法不进位。例如三块积木 3,5,6 分成两组 [3] 和 [5,6] 弟弟认为 5&#xff08;二进制1001&#xff09;加上6&#xff08…

Linux常用命令——dhcrelay命令

在线Linux命令查询工具 dhcrelay 使用dhcrelay命令可以提供中继DHCP和BOOTP请求 补充说明 dhcrelay命令使用dhcrelay命令可以提供中继DHCP和BOOTP请求&#xff0c;从一个没有DHCP服务器的子网直接连接到其它子网内的一个或多个DHCP服务器。该命令在DHCP中继服务器上使用&am…

Docker容器与虚拟化技术:Gitlab账户注册

目录 一、实验 1.gitlab 一、实验 1.gitlab (1) 概念 GitLab 是一个用于仓库管理系统的开源项目&#xff0c;使用Git作为代码管理工具&#xff0c;并在此基础上搭建起来的Web服务。 &#xff08;2&#xff09;官网 The DevSecOps Platform | GitLab &#xff08;3&#…

基于swing的火车站订票系统java jsp车票购票管理mysql源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于swing的火车站订票系统 系统有2权限&#xff1a;…

软考高级系统架构设计师系列论文七十:论信息系统的安全体系

软考高级系统架构设计师系列论文七十:论信息系统的安全体系 一、信息系统相关知识点二、摘要三、正文四、总结一、信息系统相关知识点 软考高级信息系统项目管理师系列之四十三:信息系统安全管理

LeetCode算法递归类—二叉树的右视图

目录 199. 二叉树的右视图 题解&#xff1a; 目标&#xff1a; 思路&#xff1a; 过程&#xff1a; 代码&#xff1a; 运行结果&#xff1a; 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所…

构建 NodeJS 影院预订微服务并使用 docker 部署(03/4)

一、说明 构建一个微服务的电影网站&#xff0c;需要Docker、NodeJS、MongoDB&#xff0c;这样的案例您见过吗&#xff1f;如果对此有兴趣&#xff0c;您就继续往下看吧。 你好社区&#xff0c;这是&#x1f3f0;“构建 NodeJS 影院微服务”系列的第三篇文章。本系列文章演示了…

MySql 环境搭建

目录 MySql 在 CentOS 7 环境下安装。 说明&#xff1a; 1.卸载不要的环境 2.配置 mysql 官方 yum 源 3.开始安装 4.启动 mysql 5.mysql 登录 6.配置 mysql 7. 设置开机启动 MySql 在 CentOS 7 环境下安装。 说明&#xff1a; 在安装与卸载中&#xff0c;用户切换成 r…

Java请求webservice踩过的坑

最近项目对接过程中&#xff0c;因为对方系统比较旧&#xff0c;我们和对方进行交互使用webservice方式进行&#xff0c;对方给出相关文档&#xff0c; 接口地址&#xff1a;http://ip:port/abc/def/xxxService?wsdl 接口名称&#xff1a;methodA 1-springboot配合CXF使用 …

PostgreSQL+SSL链路测试

SSL一个各种证书在此就不详细介绍了&#xff0c;PostgreSQL要支持SSL的前提需要打开openssl选项&#xff0c;包括客户端和服务器端。 测试过程。 1. 生成私钥 root用户&#xff1a; mkdir -p /opt/ssl/private mkdir -p /opt/ssl/share/ca-certificateschmod 755 -R /opt/ss…

java判断ip是否为指定网段

具体网络知识原理请看这个博文 /**** param address servletRequest.getRemoteAddr();* param host servletRequest.getRemoteHost();* return* Description 检验IP是否符合安全限定*/private boolean ipIsInNet(String address, String host){Set<String> iPset allow…

缓存优化--使用Redis将项目进行优化

缓存优化–使用Redis 文章目录 缓存优化--使用Redis1、环境搭建2、缓存短信验证码2.1、实现思路2.2、代码改造 3、缓存菜品数据3.1、实现思路3.2、代码改造 问题描述&#xff1a; 用户数量多&#xff0c;系统访问量大的时候&#xff0c;用户发送大量的请求&#xff0c;导致频繁…