如何在Ubuntu 18.04上安装PHP 7.4并搭建本地开发环境
引言
PHP是一种流行的服务器脚本语言,用于创建动态和交互式web页面。开始使用你选择的语言是学习编程的第一步。
本教程将指导您在Ubuntu上安装PHP 7.4,并通过命令行设置本地编程环境。您还将安装依赖管理器Composer,并通过运行脚本来测试您的安装。
前期准备
要完成本教程,您需要安装Ubuntu 18.04的本地或虚拟机,并具有管理权限和到该机器的互联网连接。您可以通过Ubuntu发布页面下载此操作系统。
第1步 设置PHP 7.4
你将在命令行中完成安装和设置,这是一种与计算机交互的非图形化方式。也就是说,你不需要点击按钮,而是需要输入文本,并通过文本从计算机接收反馈。
命令行,也称为shell或终端,可以帮助您修改和自动化您每天在计算机上执行的许多任务,是软件开发人员的一个重要工具。要学习许多终端命令,它们可以让你做更强大的事情。这篇介绍Linux终端的文章可以让你更好地适应终端。
在Ubuntu上,你可以通过点击屏幕左上角的Ubuntu图标,在搜索栏中输入terminal
来找到Terminal应用程序。单击终端应用程序图标来打开它。或者,您可以同时按下键盘上的CTRL
、ALT
和T
键来自动打开终端应用程序。
您需要避免依赖PHP的默认版本,因为默认版本可能会根据您运行代码的位置更改。您可能还希望安装一个不同的版本以匹配您正在使用的应用程序,或者升级到较新的版本,如PHP 8。
运行以下命令来更新apt-get
本身,它确保你可以访问你想要安装的任何内容的最新版本:
sudo apt-get update
接下来,安装software-properties-common
,它可以管理额外的软件资源:
sudo apt -y install software-properties-common
-y
标志将自动同意安装。如果不这样做,每次安装都会在终端窗口中收到一个提示。
接下来,安装ppa:ondrej/php
仓库,它将提供所有版本的PHP:
sudo add-apt-repository ppa:ondrej/php
最后,再次更新apt-get
,让你的包管理器可以看到新列出的包:
sudo apt-get update
现在您可以使用以下命令安装PHP 7.4了:
sudo apt -y install php7.4
检查安装的版本:
php -v
你看到类似下面的内容:
OutputPHP 7.4.0beta4 (cli) (built: Aug 28 2019 11:41:49) ( NTS )ight (c) The PHP Group
Zend Engine v3.4.0-dev, Copyright (c) Zend Technologieswith Zend OPcache v7.4.0beta4, Copyright (c), by Zend Technologies
除了PHP本身,您可能还需要安装一些额外的PHP模块。你可以使用这个命令来安装其他模块,用你想要安装的包替换==PACKAGE_NAME==
:
sudo apt-get install php7.4-PACKAGE_NAME
你也可以一次安装多个包。以下是一些你最可能需要安装的常用模块:
sudo apt-get install -y php7.4-cli php7.4-json php7.4-common php7.4-mysql php7.4-zip php7.4-gd php7.4-mbstring php7.4-curl php7.4-xml php7.4-bcmath
该命令将安装以下模块:
php7.4-cli
- 命令解释器,用于从shell中测试PHP脚本或执行一般的shell脚本任务php7.4-json
- 用于处理JSON数据php7.4-common
- PHP文档、示例和通用模块php7.4-mysql
- 用于使用MySQL数据库php7.4-zip
- 用于处理压缩文件php7.4-gd
- 用于处理图像php7.4-mbstring
- 用于管理非ascii字符串php7.4-curl
- 允许你用PHP发起HTTP请求php7.4-xml
- 用于处理XML数据php7.4-bcmath
- 在处理浮点精度时使用
与Apache相关的PHP配置存储在/etc/php/7.4/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的方法:作为项目的一部分在本地安装,或者作为系统范围内可执行的全局安装。无论哪种方式,都需要从本地安装开始。
本地安装
要在本地快速安装Composer,请在终端中运行此脚本:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
这个安装脚本会检查一些php.ini
的设置,如果设置不正确会发出警告,然后在当前目录下下载最新的composer.phar
。这四行代码按顺序如下:
- 将安装程序下载到当前目录
- 验证安装程序SHA-384,你也可以在这里交叉检查
- 运行安装程序
- 移除安装程序
安装程序将检查一些PHP设置,然后将composer.phar
下载到您的工作目录。这个文件是Composer二进制文件。它是一个PHAR (PHP归档),这是一种PHP的归档格式,可以在命令行上运行。
要运行Composer,需要使用php composer.phar
。例如,运行以下命令查看你安装的Composer版本:
php composer.phar --version
要在本地使用Composer,你需要将composer.phar
文件放在项目的根目录下。你可以在安装Composer之前从你的项目目录开始。你也可以在安装后移动文件。你也可以使用--install-dir
选项将Composer安装到特定的目录中,并使用--filename
选项(重新)命名它。
由于Composer是跨项目使用的,因此建议您继续阅读下一部分,并将Composer设置为全局运行。
全局安装
您可以将Composer PHAR放置在您希望的任何位置。如果你把它放在$PATH
目录下,你可以全局访问它。您甚至可以使它在Ubuntu(和其他Unix系统)上可执行,并在不直接使用PHP解释器的情况下调用它。
本地安装完成后,运行以下命令将composer.phar
移动到当前路径下的目录:
sudo mv composer.phar /usr/local/bin/composer
如果你只想为自己的用户安装它,并避免需要root权限,你可以使用~/.local/bin
,它在一些Linux发行版中默认可用:
mv composer.phar ~/.local/bin/composer
现在要运行Composer,请使用composer
而不是php composer.phar
。要检查你的Composer版本,请运行:
composer --version
作为最后一步,你可以选择使用composer init
初始化项目。这将创建一个composer.json
文件来管理项目依赖。初始化项目还将允许定义项目细节,如作者和许可证,并使用Composer的自动加载功能。您可以现在定义依赖项,也可以稍后添加它们。
运行这个命令来初始化一个项目:
composer init
运行此命令将启动安装向导。您在向导中输入的详细信息稍后可以更新,因此可以保留默认值,只需按ENTER
。如果你不准备安装任何依赖项,你可以选择no
。在每个提示框中输入你的详细信息:
OutputThis command will guide you through creating your composer.json config.
Package name (sammy/php_install): sammy/project1
Description []:
Author [Sammy <sammy@digitalocean.com>, n to skip]:
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{"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.json
和composer.lock
文件,而不是提交vendor
文件夹。
现在你已经安装了PHP,并且可以使用Composer管理项目依赖项,现在可以测试你的环境了。
第3步 测试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 7.4编程环境,可以开始编码项目了。
在开始编码之前,您可能需要设置一个集成开发环境(IDE)。虽然有许多IDE可供选择,但VS Code是一个流行的选择,因为它提供了许多强大的功能,如图形界面、语法高亮和调试。
相关文章:
如何在Ubuntu 18.04上安装PHP 7.4并搭建本地开发环境
引言 PHP是一种流行的服务器脚本语言,用于创建动态和交互式web页面。开始使用你选择的语言是学习编程的第一步。 本教程将指导您在Ubuntu上安装PHP 7.4,并通过命令行设置本地编程环境。您还将安装依赖管理器Composer,并通过运行脚本来测试您…...
狭义相对论
文章目录 一、为什么光速不变?二、为什么爱因斯坦坚信“相对性原理”三、逻辑和数学显威力,狭义相对论时空变换(洛伦兹变换)推导四、新时空变换带来的新时空观1、有关相对论时间的“傻问题”2、关于相对论的“怪问题”3、关于“双…...
仓库使用综合练习
目录 1、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。 2、安装搭建私有仓库 Harbor 3、编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私有仓库。 4、Dockerfile快速搭建自己专属的LAMP环境,生…...
如何在前端实现WebSocket发送和接收TCP消息(多线程模式)
目录 第一步:创建WebSocket连接第二步:监听WebSocket事件第三步:发送消息第四步:后端处理函数说明 当在前端实现WebSocket发送和接收TCP消息时,可以使用以下步骤来实现多线程模式。本文将详细介绍如何在前端实现WebSoc…...
VB.NET通过VB6 ActiveX DLL调用PowerBasic及FreeBasic动态库
前面说的Delphi通过Activex DLL同时调用PowerBasic和FreeBasic写的DLL,是在WINDOWS基础平台上完成的。 而 .NET平台是架在WINDOWS基础平台之上的,它的上面VB.NET或C#等开发的APP程序,下面写一下用VB.NET,通过VB6注册的Activex DLL…...
怎样不引入图片实现前端css实现x关闭按钮
首先初始化一个dom节点 <span class"closeButton"></span>设置样式 .closeButton {width: 12px;height: 12px;margin-top: 5px;margin-right: 5px;float: right;cursor: pointer;color: #105c86;}通过伪元素before after画两条线 margin-left 的设置是…...
SpringBoot实现文件下载的多种方式
SpringBoot实现文件下载的几种方式 1. 将文件以流的形式一次性读取到内存,通过响应输出流输出到前端1.1 下载文件 2. 将输入流中的数据循环写入到响应输出流中,而不是一次性读取到内存,通过响应输出流输出到前端3. 下载网络文件到本地4. 网络…...
uniapp简单版语音播放
mounted() {this.ScanAudio(http://118.178.137.235:88/ipoker.mp3, 3); // 开始播放音频},ScanAudio(url, count) {// 递归终止条件:当循环次数小于等于 0 时,停止递归if (count < 0) return;// 创建内部音频上下文对象var music uni.createInnerAu…...
前端三剑客入门一文解决
文章目录 HTML快速开发网站Flask页面结构标签基础标签超链接图片列表下拉框表格input系列多行文本form表单 网络请求HTML案例 CSSCSS盒模型CSS样式定义CSS选择器 CSS样式使用1. 在标签上直接写2. 在head标签中写3.写到css文件中 标签样式1. 高度和宽度2. 块级和行内标签3.字体设…...
php curl apache 超时 500错误
web请求超过40s 就返回500错误 php的超时时间 set_time_limit无效 curl CURLOPT_TIMEOUT 设置请求时间 无效 设置apache Timeout 链接超时 无效 最后添加 Fcgid才可以 apache 配置文件 httpd.conf <IfModule mod_fcgid.c>FcgidProcessLifeTime 10000FcgidIOTimeout 1000…...
ValueError: too many values to unpack (expected 4)
ValueError: too many values to unpack (expected 4)这个错误通常是由于解包赋值个数与返回值个数不匹配所致。 比较常见的情况是: 1.在数据预处理函数中,使用train_test_split对数据进行分割后返回值,但解包赋值时个数与返回值不匹配。 train_test_split返回的就是(X_trai…...
学习Vue过程中遇到的问题汇总
Vue 控制台出现You are running Vue in development mode. Make sure to turn on production mode when deploying for production. 在页面的body标签或head标签中加入如下代码 <script type"text/javascript">Vue.config.productionTip false</script>…...
cloud_mall-notes03
请求方式GetMapping(11)用途方法返回值GetMapping(“info”)查询管理员信息getByIdsysUserGetMapping(“info/{userId}”)查询管理员详情getByIdsysUserGetMapping(“info/{roleId}”)查询角色详情getByIdsysRoleGetMapping(“info/{categoryId}”)根据标…...
Redis注入中出现的问题
Redis注入中出现的问题 出现的问题 Error starting ApplicationContext. To display the conditions report re-run your application with debug enabled. 2023-08-23 16:38:42.294 ERROR 32136 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *********…...
机器学习实战之模型的解释性:Scikit-Learn的SHAP和LIME库详解
引言:机器学习模型的“黑箱”困境 机器学习模型的崛起让我们惊叹不已!不论是预测房价、识别图片中的猫狗,还是推荐给你喜欢的音乐,这些模型都表现得非常出色。但是,有没有想过,这些模型到底是如何做出这些决…...
【网络安全】防火墙知识点全面图解(二)
本系列文章包含: 【网络安全】防火墙知识点全面图解(一)【网络安全】防火墙知识点全面图解(二) 防火墙知识点全面图解(二) 21、路由器的访问控制列表是什么样的?22、防火墙的安全策…...
【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(8 月 14 日论文合集)
文章目录 一、检测相关(7篇)1.1 Continual Face Forgery Detection via Historical Distribution Preserving1.2 Exploring Predicate Visual Context in Detecting of Human-Object Interactions1.3 Out-of-Distribution Detection for Monocular Depth Estimation1.4 Cyclic-…...
自学设计模式(类图、设计原则、单例模式 - 饿汉/懒汉)
设计模式需要用到面向对象的三大特性——封装、继承、多态(同名函数具有不同的状态) UML类图 eg.—— 描述类之间的关系(设计程序之间画类图) : public; #: protected; -: private; 下划线: static 属性名:类型(默认值…...
python爬虫10:selenium库
python爬虫10:selenium库 前言 python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 申明 本系列所涉及的代码仅用于个人研究与讨论,并不会对网站产…...
c++ java rgb与nv21互转
目录 jni函数 c++ rgb转nv21,可以转,不报错,但是转完只有黑白图 java yuv420保存图片,先转nv21,再保存ok: c++ yuv420月bgr互转,测试ok jni函数 JNIEXPORT void JNICALL Java_com_tencent_blazefacencnn_BlazeFaceNcnn_encode(JNIEnv *env,jobject thiz, jobject in…...
多视图聚类(multi-view clustering)简介
多视图聚类 目前大概有以下几种: 多视图k-means聚类多视图谱聚类多视图图聚类多视图子空间聚类 (multi-view subspace clustering)深度学习多视图聚类 (deep multi-view clustering) 其中多视图子空间聚类具有不错的数据表征能力。 对于多视图子空间聚类而言&…...
wazhu配置以及漏洞复现
目录 1.wazhu配置 进入官网下载 部署wazhu 修改网络适配器 重启 本地开启apache wazhu案例复现 前端页面 执行 1.wazhu配置 进入官网下载 Virtual Machine (OVA) - Installation alternatives (wazuh.com) 部署wazhu 修改网络适配器 重启 service network restart 本地…...
javaweb项目部署linux服务器遇到的问题
其他有关本次部署内容请参考本站其他文章 javaweb项目要用war包 IntelliJ IDEA 可以打包out里的子目录 D:\D盘文件\浏览器\webshop\out\artifacts\webshop_war_exploded>jar cvf webshop.war * 方法来源视频 18、web项目的打包与发布_哔哩哔哩_bilibili myeclipse项目…...
【数据结构OJ题】环形链表
原题链接:https://leetcode.cn/problems/linked-list-cycle/description/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 整体思路:定义快慢指针fast,slow,如果链表确实有环,fast指针一定会…...
PySpark-核心编程
2. PySpark——RDD编程入门 文章目录 2. PySpark——RDD编程入门2.1 程序执行入口SparkContext对象2.2 RDD的创建2.2.1 并行化创建2.2.2 获取RDD分区数2.2.3 读取文件创建 2.3 RDD算子2.4 常用Transformation算子2.4.1 map算子2.4.2 flatMap算子2.4.3 reduceByKey算子2.4.4 Wor…...
vue 在IOS移动端中 windon.open 等跳转外部链接后,返回不触发vue生命周期、mounted等相关事件-解决方法
做了一个列表的h5页面,通过点击列表跳转到外部链接,然后返回是回到原来页面状态,类似缓存。发现在ios端返回后,vue 的mounted() 、create()、路由监听等方法都不会执行。在安卓和pc 端都能正常调用。 解决方案:监听pa…...
股票预测和使用LSTM(长期-短期-记忆)的预测
一、说明 准确预测股市走势长期以来一直是投资者和交易员难以实现的目标。虽然多年来出现了无数的策略和模型,但有一种方法最近因其能够捕获历史数据中的复杂模式和依赖关系而获得了显着的关注:长短期记忆(LSTM)。利用深度学习的力…...
Docker搭建个人网盘、私有仓库
1、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘 [rootlocalhost ~]# docker pull mysql:5.6 [rootlocalhost ~]# docker pull owncloud [rootlocalhost ~]# docker run -itd --name mysql --env MYSQL_ROOT_PASSWORD123456 mysql:5.6 [rootlocalhost ~]# doc…...
3种获取OpenStreetMap数据的方法【OSM】
OpenStreetMap 是每个人都可以编辑的世界地图。 这意味着你可以纠正错误、添加新地点,甚至自己为地图做出贡献! 这是一个社区驱动的项目,拥有数百万注册用户。 这是一个社区驱动的项目,旨在在开放许可下向每个人提供所有地理数据。…...
数据处理与统计分析——MySQL与SQL
这里写目录标题 1、初识数据库1.1、什么是数据库1.2、数据库分类1.3、相关概念1.4、MySQL及其安装1.5、基本命令 2、基本命令2.1、操作数据库2.2、数据库的列类型2.3、数据库的字段属性2.4 创建和删除数据库表2.5、数据库存储引擎2.6、修改数据库 3、MySQL数据管理3.1、外键 My…...
公司信息网站建设目标/响应式网站建设
我们已经仔细研究了可变范围和提升 ,因此今天我们将通过研究现代JavaScript开发中的三个最重要且使用最频繁的概念(闭包,回调和IIFE)来结束我们的探索。 关闭 在JavaScript中, 闭包是即使父级返回后仍保留对其父级范围…...
南宁网站建设哪里有/怎么在百度免费推广
有时工程并非遵循Maven目录规范的,而是遵循war[Web Application Archie file]目录规范 开发方面,使用Sysdeo Eclipse Tomcat Launcher plugin支持开发、调试 使用此目录结构的好处是直观,即所有文件和最终在服务器上运行时的目录结构一致 坏处…...
什么网站可以做高数/视频号下载器手机版
RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络,从远程计算机程序上请求服务,而不必了解底层网络技术的协议。说的再直白一点,就是客户端在不必知道调用细节的前提之下,…...
网站怎样排版/搜索引擎优化人员优化
今天将《网络互连技术》--路由,交换与远程访问实训教程的实验书拿出来了看了部门。 搭建了一个基于DYNAGEN的虚拟环境。 归纳一下大约步骤: ~~~~~~~~~~~~~~ 一,在WINDOWS上安装一个虚拟环回网卡,LOOP 0,作为连接路由器…...
祁东seo公司/seo快速排名软件推荐
转载于:https://blog.csdn.net/lanxuezaipiao/article/details/16358159 一、简单介绍 ostringstream是C的一个字符集操作模板类,定义在sstream.h头文件中。ostringstream类通常用于执行C风格的串流的输出操作,格式化字符串,避免申…...
建设电子商务网站要多少钱/台州seo优化
弱类型是通过dictionary作为ViewData,它使用的是KeyValue来使用,我们一般在codeBehind来编写辅助方法来做。 对于强类型的来说,我们就需要编写一个强类型的类型或者用框架中已有的类型。这样在页面中可以得到更加好的IDE的支持,因…...