如何在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应用程序。单击终端应用程序图标来打开它。或者,您可以同时按下键盘上的CTRL
、ALT
和T
键来自动打开终端应用程序。
注意: 在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不是与yum
或apt
相同意义上的包管理器。它处理包或库,但它以每个项目为基础管理它们,将它们安装在一个目录中(例如: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.json
和composer.lock
文件。
现在你已经安装了PHP,并且可以使用Composer管理项目依赖项,现在可以测试你的环境了。
第4步 测试PHP环境
要测试您的系统是否正确配置了PHP,您可以创建并运行一个基本的PHP脚本。将这个脚本命名为hello.php
:
sudo nano hello.php
这将打开一个空白文件。将以下文本(有效的PHP代码)放入文件中:
hello.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是一个流行的选择,因为它提供了许多强大的功能,如图形界面、语法高亮和调试。
相关文章:
如何在Ubuntu 22.04上安装PHP 8.1并设置本地开发环境
引言 PHP是一种流行的服务器脚本语言,用于创建动态和交互式web页面。开始使用你选择的语言是学习编程的第一步。 本教程将指导您在Ubuntu上安装PHP 8.1,并通过命令行设置本地编程环境。您还将安装依赖管理器Composer,并通过运行脚本来测试您…...
wazuh安装与使用
目录 一、wazuh安装 二、wazuh使用 一、wazuh安装 下载:https://wazuh.com 可以直接安装OVA这个,然后导入到Linux中就可以使用了。 导入完毕后开启,使用远程连接工具进行连接,出现以下画面则成功了。 之后可以看一下图形化界面…...
Vue 3 常见面试题汇总
前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 前言 最近两年许多大厂都在实行“降本增效”、“优化组织架构”,然后“为社会输送了大量人才”,今年(2023ÿ…...
Docker是什么?详谈它的框架、使用场景、优势
作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、什么是 Docker? 二、Docker 的架构 1、Docker客户端 2、Docker守护进程 3、Docker镜像 4、Docker容器 5、Docker…...
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)…...
【项目 计网5】 4.15 TCP通信实现(服务器端)4.16 TCP通信实现(客户端)
文章目录 4.15 TCP通信实现(服务器端)4.16 TCP通信实现(客户端) 4.15 TCP通信实现(服务器端) // TCP 通信的服务器端// TCP 通信的服务器端 #include <stdio.h> #include <arpa/inet.h> #incl…...
windows可视化界面管理服务器上的env文件
需求:在 Windows 环境中通过可视化界面编辑位于 Linux 主机上的 env 文件的情况,我现在环境是windows环境,我的env文件在linux的192.168.20.124上,用户是op,密码是op,文件绝对路径是/home/op/compose/env …...
自然语言处理在智能客服和聊天机器人中的应用
文章目录 1. 引言2. NLP基础2.1 词法分析2.2 语法分析2.3 语义理解2.4 情感分析 3. 智能客服中的应用3.1 自动问答3.2 意图识别3.3 情感分析与情绪识别 4. 聊天机器人中的应用4.1 对话生成4.2 上下文理解 5. 技术原理与挑战5.1 语言模型5.2 数据质量和多样性5.3 上下文理解 6. …...
为什么不建议使用@Async注解创建线程
1 前言 在很久很久之前,我有一段痛苦的记忆。那种被故障所驱使的感觉,在我脑海里久久无法驱散。 原因无它,有小伙伴开启了线程池的暴力使用模式。没错,就是下面这篇文章。 夺命故障 ! 炸出了投资人! 我有必要简单的…...
更新Ubuntu18.04上的CUDA和GCC
问题: 有一台服务器的GPU是1080,有八张卡,已经好久没有人用了。cuda版本是10.1,我现在拿来复现一些论文的模型,经常遇到版本依赖问题,报错Driver is too old。所以要更新一下驱动。遇到的主要问题是gcc版本也太低了&am…...
算法通过村第6关【青铜】| 如何通过中序和后序遍历恢复二叉树
中序:3 4 8 6 7 5 2 1 10 9 11 15 13 14 12 后序:8 7 6 5 4 3 2 10 15 14 13 12 11 9 1 通过这两个遍历顺序恢复二叉树 首先我们知道中序遍历顺序左中右,后序遍历顺序左右中 第一步: 由后序遍历确定根结点为1 > 由中序遍历…...
高斯牛顿法和LM算法异同示例
LM(Levenberg-Marquardt)算法和高斯牛顿(Gauss-Newton)算法是两种用于非线性最小二乘问题的优化算法,它们也有一些相似之处: 迭代优化:LM算法和高斯牛顿算法都使用迭代的方式来优化参数值&#…...
奥威BI财务数据分析方案:只做老板想看的
奥威BI财务数据分析方案是一套从老板的视角出发,做老板想看的财务数据分析报表,帮助老板更好地了解公司的财务状况和经营绩效的综合性智能财务数据分析方案,可实现财务数据分析可视化、灵活自主性,随时为老板提供最为直观的财务数…...
opencv进阶19-基于opencv 决策树cv::ml::DTrees 实现demo示例
opencv 中创建决策树 cv::ml::DTrees类表示单个决策树或决策树集合,它是RTrees和 Boost的基类。 CART是二叉树,可用于分类或回归。对于分类,每个叶子节点都 标有类标签,多个叶子节点可能具有相同的标签。对于回归,每…...
Unity通过TCP/IP协议进行通信
uinty项目中需要与C编写的硬件进行通信,因此采用TCP/IP协议进行通信,主要实现了与服务器的连接、通信内容的发送以及断开连接等功能。 根据确定好的协议格式,编写需要发送的内容,将其转为字节流(byte[])通过…...
基于VuePress搭建知识库
我这边需要搭建一个运维知识库,将项目的方方面面记录下来,方便新手接手运维。 准备环境 Nginx 1.19.0VuePress 1.xMinio RELEASE.2022-02-16T00-35-27Zvuepress-theme-vdoing主题 安装VuePress 根据官网步骤即可 # 创建目录 mkdir vuepress-starter…...
odoo安装启动遇到的问题
问题:在第一次加载odoo配置文件的时候,启动失败 方法: 1、先检查odoo.conf的内容,尤其是路径 [options] ; This is the password that allows database operations: ; admin_passwd admin db_host 127.0.0.1 db_port 5432 d…...
【Flink】Flink提交流程
我们通常在学习的时候需要掌握大数据组件的原理以便更好的掌握这个大数据组件,Flink实际生产开发过程中最常见的就是提交到yarn上进行调度,模式使用的Per-Job模式,下面我们就给大家讲下Flink提交Per-Job任务到yarn上的流程,流程图…...
哪种英特尔实感设备适合您?
原文链接 https://www.intelrealsense.com/which-device-is-right-for-you/ 无论您是深度和跟踪硬件的新手,还是经验丰富的专业人士,确定我们提供的众多英特尔实感产品中哪些产品适合您的项目仍然是一项挑战。在这篇文章中,我们将讨论英特尔…...
C++11的四种强制类型转换
目录 语法格式 static_cast(静态转换) dynamic_cast(动态转换) const_cast(常量转换) reinterpret_cast(重解释) 语法格式 cast-name <typename> (expression) 其中cast-name为static_cast、dynamic_cast、const_cast 和 reinterpret_cast之一…...
分布式事务(4):两阶段提交协议与三阶段提交区别
1 两阶段提交协议 两阶段提交方案应用非常广泛,几乎所有商业OLTP数据库都支持XA协议。但是两阶段提交方案锁定资源时间长,对性能影响很大,基本不适合解决微服务事务问题。 缺点: 如果协调者宕机,参与者没有协调者指…...
React源码解析18(9)------ 实现多节点渲染【修改beginWork和completeWork】
摘要 目前,我们已经实现了单节点的,beginWork,completeWork,diff流程。但是对于多节点的情况,比如: <div><span></span><span></span> </div>这种情况,我们还没有处…...
【GUI】基于开关李雅普诺夫函数的非线性系统稳定(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
Redis 缓存满了怎么办?
引言 Redis 缓存使用内存来保存数据,随着需要缓存的数据量越来越大,有限的缓存空间不可避免地会被写满。此时,应该怎么办?本篇文章接下来就来聊聊缓存满了之后的数据淘汰机制。 值得注意的是,在 Redis 中 过期策略 和…...
Grafana 安装配置教程
Grafana 安装配置教程 一、介绍二、Grafana 安装及配置2.1 下载2.2 安装2.2.1 windows安装 - 图形界面2.2.2 linux安装 - 安装脚本 三、Grafana的基本配置3.1 登录3.2 Grafana设置中文 四、grafana基本使用 一、介绍 Grafana是一个通用的可视化工具。对于Grafana而言࿰…...
【Linux】临界资源和临界区
目录 一、临界资源 二、如何实现对临界资源的互斥访问 1、互斥量 2、信号量 3、临界区 三、临界区 四、进程进入临界区的调度原则 一、临界资源 概念:临界资源是一次仅允许一个进程使用的共享资源,如全局变量等。 二、如何实现对临界资源的互斥访问 …...
拓扑排序Topological sorting/DFS C++应用例题P1113 杂务
拓扑排序 拓扑排序可以对DFS的基础上做变更从而达到想要的排序效果。因此,我们需要xy准备,vis数组记录访问状态,每一个任务都可以在dfs的过程中完成。 在使用拓扑排序方法时一些规定: 通常使用一个零时栈不会直接输出排序的节点…...
基于jenkins构建生成CICD环境
目录 一、安装配置jenkins 1、环境配置 2、软件要求 3、jdk安装(我是最小化安装,UI自带java要先删除rm -rf /usr/local/java 4、安装jenkins-2.419-1.1 二、Jenkins配置 1、修改jenkins初始密码 2、安装 Jenkins 必要插件 3、安装 Publish Over SS…...
在线图片怎么转换成PDF?在线图片转换成PDF步骤介绍
文件格式要转化不知道怎么办?想要网上下载文件格式转换软件,但是却不知道下载哪个好?今天小编小编就给大家分享一下靠谱的小圆象PDF转换器工具,想知道这款软件好不好用?在线图片怎么转换成PDF?那就进来看看吧。 在线图片怎么转换成PDF 小圆象PDF转换…...
Linux共享库基础及实例
共享库是将库函数打包成一个可执行文件,使得其在运行时可以被多个进程共享。 目标库 回顾下构建程序的一种方式: 将每个源文件编译成目标文件,再通过链接器将这些目标文件链接组成一个可执行程序。 gcc -g -c prog.c mod1.c mod2.c gcc -g …...
广告平台源码/seo可以从哪些方面优化
PyInstaller的原理简介PyInstaller其实就是把python解析器和你自己的脚本打包成一个可执行的文件,和编译成真正的机器码完全是两回事,所以千万不要指望成打包成一个可执行文件会提高运行效率,相反可能会降低运行效率,好处就是在运…...
有口碑的企业网站建设/app开发公司推荐
原文:http://coolketang.com/staticCoding/5a99105017d009003597a964.html 1. 本节课将为您演示,集合控件在故事板中的使用。首先打开之前创建的单视图项目。 2. 然后打开故事板文件。 3. 点击控件库垂直滚动条,定位集合控件所在的位置。 4. …...
公司做网站之前要准备什么/seo咨询服务价格
Linux系统应用逐步区域广泛,吸引力不少青年朋友想要踏足Linux运维的征途,确定了自己的发展路线以后,接着就要选择一个合适的Linux系统版本。事实上,这个问题也是大多数初学者最为头疼的一个问题了。按我们一起来聊聊吧。 如果你是…...
wordpress 功能开发教程/游戏推广论坛
定义一个方法的时候可以使用throws关键字声明。使用throws关键字声明的方法表示此方法不处理异常,而交给方法调用处进行处理。 throws关键字格式: public 返回值类型 方法名称(参数列表,,,)th…...
网站建设那家好/如何注册一个平台
MNIST数据集介绍 MNIST数据集官网:http://yann.lecun.com/exdb/mnist/ MNIST数据库是非常经典的一个数据集,就像你学编程起初写一个“Hello Word”的程序一样,学Deep Learning你就会写识别MNIST数据集的Model。 MNIST数据集是由0〜9手写数字图…...
公章在线制作网站/小说百度风云榜
需求场景 在很多的数据开发场景下,MaxCompute项目管理员需要能够提供给某些角色或团队(如开发人员、运维人员)对项目内所有表具备特定权限。例如,某些客户可能需要在生产项目中,给ETL开发团队赋予所有表(或者所有ods开…...