在win10里顺利安装了apache2.4.41和php7.4.29以及mysql8.0.33
一、安装apache和php
最近在学习网站搭建。其中有一项内容是在windows操作系统里搭建apache+php环境。几天前根据一本书的上的说明尝试了一下,在win10操作系统里安装这两个软件:apache2.4.41和php7.4.29,安装以后apche能正常启动,但是php没有正常工作。这两个软件需要Microsoft Visual C++运行库的支持。这两个软件根据版本的不同,有的需要Microsoft Visual C++ 2012 运行库的支持,有的需要Microsoft Visual C++ 2015运行库或其他版本的支持。我的电脑里已经安装了Microsoft Visual C++ 2013运行库和Microsoft Visual C++ 2015-2019运行库,由于为了省事,我没有安装Microsoft Visual C++ 2012运行库,这导致没有选择书上php5.6.19版本,从而导致php没有正常工作,不能在游览器里打开php文件,不能打开phpinfo.php文件。当时搜索网上资料,得到的信息是版本不同,导致配置apache配置文件http.conf和php.ini文件不正确,从而导致php不能正常工作。
最近找了一本书,书名是《PHP7从入门到精通》。这边书是2019年出版的,使用了php7.2版本。该书的第二章讲了获得PHP安装资源包,在windows10里安装IIS和PHP,以及在windows10里安装apache和PHP 。根据第二章里内容,按照安装说明,顺利安装了这两个软件,这两个软件能正常工作。
电脑CPU是64位CPU,windows10 是家庭版64位。
下载的apache是:php-7.4.29-Win32-vc15-x64.zip,从www.apache.org推荐的编译后文件下载网站之一 www.apachelounge.com网站上下载。
下载的PHP是:httpd-2.4.41-win64-VC14.zip,从www.php.net网站上下载。
配置与安装一共有好几步。
第一步:下载PHP软件,下载apache软件。
第二步:新建子目录d:\web\apache2.4\,将apache压缩文件解压到d:\web\apache2.4\。新建子目录d:\web\php7.4\,解压缩PHP压缩文件到d:\web\php7.4\子目录下。解压以后两个子目录的内容如下图所示。
第三步:配置apche配置文件 .\conf\httpd.conf 。
# 修改参数SRVROOT,它会在该文档多处用到,DocumentRoot用到了该参数。
Define SRVROOT "d:\web\Apache2.4"
#参数DocumentRoot如下所示。该参数的值可以根据实际情况进行修改。
DocumentRoot "${SRVROOT}/htdocs"
# 添加如下几行
LoadModule php7_module "d:\web\php7.4\php7apache2_4.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-php .html
PHPIniDir "d:\web\php7.4\php.ini"
第四步:将PHP安装子目录的php.ini-development 复制并改名为php.ini 。
第五步:修改PHP配置文件php.ini 。
4.1 修改下方文本里的最后一行。
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
;extension_dir = "./"
; On windows:
;extension_dir = "ext"
将前面的分号去掉,并修改成PHP安装目录。改成以后如下所示。
extension_dir = "d:\web\php7.4\ext"
4.2 去除参数值扩展前的分号。去除以后如下所示。这些行是连续排列的。其中有四个列外,行首保持带分号。
extension=bz2
extension=curl
;extension=ffi
;extension=ftp
extension=fileinfo
extension=gd2
extension=gettext
extension=gmp
extension=intl
extension=imap
extension=ldap
extension=mbstring
extension=exif ; Must be after mbstring as it depends on it
extension=mysqli
extension=oci8_12c ; Use with Oracle Database 12c Instant Client
extension=odbc
extension=openssl
extension=pdo_firebird
extension=pdo_mysql
extension=pdo_oci
extension=pdo_odbc
extension=pdo_pgsql
extension=pdo_sqlite
;extension=pgsql
;extension=shmop
第六步:安装apache 。
用管理员身份打开command命令行窗口,在命令行窗口里用命令安装apache。在这里也能卸载apache。
输入:d:\
输入:cd web\apache2.4\bin
输入:httpd -k install
会安装apache。要卸载apache,则输入命令:httpd -k uninstall 。
第七步:启动apache 。
一种方法是点击d:\web\apache2.4\bin\ApacheMonitor.exe,运行该程序,该程序会在右下角出现一个图标,左键点击该图标,然后点击start,启动apache 。
另一种方法麻烦一些,一管理员身份打开command命令行窗口,然后输入d:\,接着输入: cd web\apache2.4\bin ,然后输入 httpd -k start ,就能启动apache 。
第八步:测试PHP是否正常安装。
在d:\web\apache2.4\htdocs\子目录里用记事本编辑新文件phpinfo.php,在该文件里加入一行:
<?php phpinfo(); ?>
然后保存该文件。
接着在游览器里输入:localhost/phpinfo.php, 能打开php信息界面说明正常安装了PHP 。
二、安装mqsql
根据书上的说明,到mysql网站下载mysql。mysql有多个版本。有5.7的版本,有8.0.33的版本,还有很多其他版本。从尝试的角度,选择了最新版8.0.33。该zip文件有280多M,下载比较快,大约十分钟下载完成。然后新建子目录D:\web\mysql8.0,接着将它解压缩到新建的子目录,然后用管理员身份打开command命令行窗口,依次输入如下命令:
d:
cd web\mysql8.0\bin
mysqld.exe -install
安装MySQL。一般能顺利安装。如果需要卸载数据库的话,输入如下命令:
mysqld.exe -remove
接下来初始化数据库,输入如下命令:
mysqld.exe --initialize-insecure
初始化数据库。然后启动mysql服务,在该命令行窗口里输入命令:net start mysql 。要停止mysql服务,则在该命令行窗口里输入命令:net stop mysql 。
然后在命令行窗口访问mysql。输入命令:mysql -u root 。就能登录mysql。接着给mysql的root用户设置密码,输入命令:set password for root@localhost = 'xxyyzz' 。其中xxyyzz请修改成你想设置又能记住的密码。设置完以后要退出mysql,输入命令:exit 。然后输入重新用新密码登录MySQL,在命令行窗口输入命令:mysql -u root -p ,接着在新提示行里输入刚设置的密码,就能再次登录mysql。
参考资料
1、《PHP7从入门到精通》,张工厂,刘玉萍等等编著,清华出版社出版,2019年1月第二版。
2、《PHP+MySQL网站开发项目式教程》,传智播客编著,人民邮电出版社,2016年8月第一版。
相关文章:

在win10里顺利安装了apache2.4.41和php7.4.29以及mysql8.0.33
一、安装apache和php 最近在学习网站搭建。其中有一项内容是在windows操作系统里搭建apachephp环境。几天前根据一本书的上的说明尝试了一下,在win10操作系统里安装这两个软件:apache2.4.41和php7.4.29,安装以后apche能正常启动,…...

云服务仿真:完全模拟 AWS 服务的本地体验 | 开源日报 No.45
localstack/localstack Stars: 48.7k License: NOASSERTION LocalStack 是一个云服务仿真器,可以在您的笔记本电脑或 CI 环境中以单个容器运行。它提供了一个易于使用的测试/模拟框架,用于开发云应用程序。主要功能包括: 在本地机器上完全…...

css实现不规则图片文字环绕效果
依旧,先上效果图,可以看见,文字环绕这个椭圆形的图片, 依旧是遵循开源精神,代码就直接放下面了 (点个赞或者给个评论啥的吧,我就发现我的文章全是光看不点赞,不评论的的) <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&quo…...

Day-05 CentOS7.5 安装 Docker
参考 : Install Docker Engine on CentOS | Docker DocsLearn how to install Docker Engine on CentOS. These instructions cover the different installation methods, how to uninstall, and next steps.https://docs.docker.com/engine/install/centos/ Doc…...

激光雷达:自动驾驶的眼睛
激光雷达:自动驾驶的眼睛 文章目录 引言激光雷达的原理自动驾驶中的应用激光雷达的优势激光雷达的挑战结论结论 2023星火培训【专项营】Apollo开发者社区布道师倾力打造,包含PnC、新感知等的全新专项课程上线了。理论与实践相结合,全新的PnC培…...

Scratch3.0下载
通俗易懂,直接上链接 链接:https://pan.baidu.com/s/1n-QFEQWT8im8BHQu1wIjtg?pwd1016 提取码:1016...

多功能频率计周期/脉宽/占空比/频率测量verilog,视频/代码
名称:多功能频率计周期、脉宽、占空比、频率测量verilog 软件:Quartus 语言:Verilog 代码功能: 多功能频率计,可测量信号的周期、脉冲宽度、占空比、频率,语言为verilog,quartus软件设计仿真…...
img标签src动态绑定资源失败问题
img标签src动态绑定资源失败问题 需要采用require的方式进行 在 Vue 中,require 是一个通用的模块加载函数,用于在运行时(客户端或服务器端)引入模块。它通常用于加载 JavaScript 文件、JSON 数据、静态资源等。 组件使用…...

【自学笔记】网络安全——黑客技术
想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客!!! 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队…...
Rust 技术文档及详细使用命令
概述 Rust 是一种现代、安全、并发、高性能的系统级编程语言。它与其他语言相比具有许多独特的特性,例如内存安全、所有权系统和生命周期等,使得它成为编写可靠和高效软件的理想选择。 本文档将介绍 Rust 的基本概念、语法、工具以及常用命令ÿ…...
建立HTTP代理IP池的技术和工具支持
建立HTTP代理IP池需要多种技术和工具支持,包括代理服务器、IP地址池、IP地址验证、数据库技术、网络安全技术、IP地址获取工具、IP地址验证工具、数据库管理工具、网络安全工具和自动化工具等。 代理服务器 代理服务器是HTTP代理IP池的核心组成部分,它可…...
【机器学习】数据格式csv/txt/pkl
文章目录 序言1. 数据存成csv、txt还是pkl2. pandas怎么读取csv、txt文件或者pkl文件3. 数据格式:pkl文件补充介绍 序言 用什么格式存储场景挖掘得到的数据目前为止用到过的一些数据存储格式,如proto/xml/json/txt/csv等,还有pkl,…...

unity脚本_Input鼠标键盘 c#
获取鼠标坐标 检测鼠标输入 如果在运行游戏场景中点击一下鼠标左键 检测鼠标抬起 选中即可 检测键盘按下 当前屏幕分辨率 注意:获取的是显示器的分辨率 获取设备屏幕宽高 屏幕休眠模式 窗口/全屏模式 移动设备屏幕转向...

解析‘找不到msvcp140.dll无法继续执行代码’这个问题的解决方法
大家好!今天我要和大家分享的主题是“msvcp140.dll丢失的解决方法”。我们都知道,在运行一些软件或游戏时,经常会遇到“msvcp140.dll丢失”的错误提示,这会让我们非常烦恼。那么,这个问题是什么原因引起的呢࿱…...

练[FBCTF2019]RCEService
[FBCTF2019]RCEService 文章目录 [FBCTF2019]RCEService掌握知识解题思路关键paylaod 掌握知识 json字符串格式,命令失效(修改环境变量)–绝对路径使用linux命令,%0a绕过preg_match函数,代码审计 解题思路 打开题目链接,发现…...
php实战案例记录(21)sprintf函数
在PHP中,sprintf()函数用于格式化字符串并返回一个字符串。它可以根据指定的格式对参数进行格式化,并将结果存储在一个字符串中。 sprintf()函数的语法如下: sprintf(format, var1, var2, ...)其中,format是一个包含格式说明符的…...

【数据结构-二叉树 九】【树的子结构】:树的子结构
废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【子结构】,使用【二叉树】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…...

七张图解锁Mybatis整体脉络,让你轻松拿捏面试官
前言 MyBatis是一款ORM(Object-Relational Mapping)框架,其主要用于将Java对象与关系数据库之间进行映射,凭借其轻量性、稳定性以及广泛的开源社区其受到了广大开发者的追捧。 那MyBatis为我们做了哪些事情呢?其实&a…...
力扣之删除有序数组中的重复项
力扣:26. 删除有序数组中的重复项 - 力扣(LeetCode) 方法:双指针法。 我的方法: class Solution { public:int removeDuplicates(vector<int>& nums) {int slow 0,fast;for(fast 0; fast < nums.size()…...

pnpm、npm、yarn 包管理工具『优劣对比』及『环境迁移』
前言 博主在开发前端网站的时候,发现随着开发的项目的逐渐增多,安装的依赖包越来越臃肿,依赖包的安装速度也是非常越来越慢,多项目开发管理也是比较麻烦。之前我就了解过 pnpm,但是当时担心更换包管理环境可能会出现的…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...