【小白专用25.02.09已验证】windows 11 安装PHP8.4.3 +Apache2.4+SqlServer2022
【本文会持续更新 新版安装】
2024.5.26 安装 PHP 8.4.3
环境说明
- windows:windows 11 x64
- apache: Apache 2.4.58
- php :PHP 8.4.3
- SqlServer2022
【php安装完了,可以用这开发环境,非常牛】
【小白专用24.5.26 已验证】VSCode下载和安装与配置PHP开发环境(详细版)-CSDN博客
一.php
1、PHP下载
PHP For Windows: Binaries and sources Releases

注意:
1.要下载Thread Safe,否则没有php8apache2_4.dll这个文件;如果使用Apache作为服务器的话,一定要下载Thread Safe的 如果使用IIS的请下载 NON Tread safe的
2.如果是64位系统要下载x64的,x86的不行
3.下载Zip
2、PHP解压安装
将Zip进行解压,里面的内容放置到D:\tool\php,其中php8apache2_4.dll在PHP的安装路径下

3、PHP配置
3.1把php文件夹中的php.ini-development复制一份,并修改为:php.ini。

3.2修改php.ini:将;extension_dir = “ext” 修改为 extension_dir = “D:/tool/php/ext” (去掉extension前面的分号,ext的路径)


session的细节讨论
① session数据默认存放时间是1400秒(24分钟),这个时间可以通过php.ini文件修改,session.gc_maxlifetime=1440,时间可以自定,修改后需重启apache,这个时间是指定在1440秒内没有使用session文件,该session才会被当作垃圾文件回收
② session文件存放的路径是可以修改php.ini文件,session.save_path=”c:/mysession”
PHP的Session数据存储在服务器的文件系统中,具体位置可以通过配置文件php.ini中的session.save_path参数来指定。例如,可以将Session数据存储在/tmp/sessions目录下,设置如下:session.save_path = "/tmp/sessions"

此外,PHP还支持将Session数据存储在其他地方,例如数据库或缓存系统。例如:
数据库存储:可以使用session.save_handler参数设置为memcached或redis,分别将Session数据存储在Memcached服务器或Redis服务器中。这需要安装并配置相应的扩展

MYSQL的配置
a.取消下面两行的注释(;分号是注释)
extension=mysqli
extension=pdo_mysql

配置PHP上传限制(php.ini):
upload_max_filesize = 100M
post_max_size = 101M
max_execution_time = 300
根据您提供的代码和错误信息,这是一个典型的PHP cURL在发起HTTPS请求时遇到的SSL证书验证问题。错误“SSL certificate problem: unable to get local issuer certificate”表明您的PHP环境缺少验证服务器SSL证书所需的受信任根证书。
以下是几种解决方案,从最推荐到临时方案排序:
1. 根本解决方案:配置CA证书文件(推荐)
这是最安全、一劳永逸的方法。您需要下载最新的受信任CA证书包,并在PHP配置中指定其路径。
操作步骤:
-
下载最新CA证书包:
- 从官方源下载最新的
cacert.pem文件。建议使用以下链接: - 下载后,将文件保存到服务器的一个安全目录,例如
D:\php\cacert.pem(Windows)或/etc/ssl/certs/cacert.pem(Linux)。
- 从官方源下载最新的
-
配置
php.ini文件:
- 找到您PHP正在使用的
php.ini文件。可以通过命令行运行php --ini查看,或在Web环境中通过phpinfo()函数查看“Loaded Configuration File”一项。 - 在
php.ini文件中,找到并修改或添加以下两行配置(请将路径替换为您实际存放cacert.pem的绝对路径):ini
curl.cainfo = "D:\php\cacert.pem" ; Windows示例 ; curl.cainfo = "/etc/ssl/certs/cacert.pem" ; Linux示例 openssl.cafile = "D:\php\cacert.pem" ; 同时配置此项,确保其他SSL相关函数也生效同时配置此项,确保其他SSL相关函数也生效 - 注意:路径必须用英文双引号包裹,并且确保PHP进程有该文件的读取权限。
- 找到您PHP正在使用的
-
重启Web服务:
- 修改
php.ini后,必须重启您的Web服务器(如Apache、Nginx)和PHP-FPM服务(如果使用),更改才会生效。仅仅刷新网页是无效的。
- 修改
优点:全局生效,安全性高,所有使用cURL或OpenSSL的PHP请求都将受益。
缺点:需要服务器配置权限和重启服务。
2. 在代码中指定证书路径
如果您无法修改全局PHP配置,可以在您的cURL请求代码中直接指定CA证书的路径。
修改您的代码示例:
在您现有的 curl_setopt_array 数组中,增加 CURLOPT_CAINFO 选项:
php
// 4. 设置 cURL 选项 curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => $postData, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Accept: application/json' ], CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYPEER => true, // 保持为 true CURLOPT_CAINFO => 'D:\php\cacert.pem', // 新增:指定CA证书的绝对路径 CURLOPT_TIMEOUT => 15 ]);
优点:无需重启服务,配置针对单个请求或应用。
缺点:需要在每个发起HTTPS请求的cURL设置中都添加此配置;证书文件路径需要随代码部署。
3. 临时调试方案:关闭SSL验证(不推荐用于生产环境)
警告:此方法会完全禁用SSL证书验证,存在中间人攻击的安全风险,仅适用于本地开发或临时测试环境。
您可以将代码中的 CURLOPT_SSL_VERIFYPEER 选项设置为 false。
php
CURLOPT_SSL_VERIFYPEER => false, // 跳过 SSL 验证
CURLOPT_SSL_VERIFYHOST => false, // 有时也需要同时禁用主机名验证
强烈建议:如果必须使用此方法,请务必添加清晰的注释,并确保在上线前将其恢复为安全配置。
php
// TODO: 临时关闭SSL验证以解决本地开发证书问题,上线前必须配置CA证书! - 2026-06-12 CURLOPT_SSL_VERIFYPEER => false,
4. 检查系统时间
一个容易被忽略的细节是服务器系统时间。SSL证书验证依赖于有效期,如果您的服务器系统时间偏差过大(快或慢超过几分钟),即使证书有效也会触发此错误。
- Linux:运行
date命令检查时间,使用ntpdate或timedatectl命令同步时间。 - Windows:确保“Windows时间服务”已启动,并检查时区设置是否正确。
问题总结与建议
您遇到的错误根源在于PHP的cURL扩展无法找到可信的根证书来验证 https://as.cn 的SSL证书链。
- 首选方案:采用第1种方法,下载最新的
cacert.pem并配置php.ini。这是标准、安全的做法。 - 次选方案:如果无权限修改服务器配置,使用第2种方法,在代码中指定证书路径。
- 临时方案:仅在开发环境且明确风险的情况下,使用第3种方法进行快速测试,但上线前务必修正。
- 辅助检查:完成上述配置后若问题依旧,请检查第4点的系统时间。
PHP安装成功测试,大前提,Apache是开启状态
二、下载安装配置Apache:
1、Apache下载





3、Apache安装
下载下后解压缩。如解压到D:\tool\Apache24
4、Apache配置
4.1找到 Apache 解压目录中的 conf 目录下的 httpd.conf 文件:
4.1.1修改:Define SRVROOT,将Define SRVROOT “Apache24的路径”,即Apache程序的位置(Apache文件夹目录)


端口 Listen 80 (默认80,避免被占用可以使用小于65535的大端口):因80端口容易冲突,改为8081或其他

4.1.2添加如下代码:
#LoadModule

LoadModule php_module "D:/tool/php/php8apache2_4.dll"
PHPIniDir "D:/tool/php/"
AddType application/x-httpd-php .php .html .htm

4.1.3修改DocumentRoot 和< Directory >,后边分别添加虚拟目录。
将引号内容改为自己实际目录,为php项目的存放目录, //网站的根目录 如 E:\www

4.1.4 在Windows服务器下设置Apache的默认文档
找到Directory设置,插入 DirectoryIndex 加上所需要的默认文件名即可,,重启Apache,测试一下
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>

4.1.5开启Apache mod_rewrite模块(解决404 Not Found)
网站搭建完成了,进入登录界面就是访问不了。
原因大概是没有开启Apache mod_rewrite模块,或者没有配置完全。
步骤1:启用mod_rewrite模块
在conf目录的httpd.conf文件中找到
LoadModule rewrite_module modules/mod_rewrite.so
将这一行前面的#去掉。

步骤2:AllowOverride None 将None改为 All
步骤3:重新启动apache
如此便可以访问了页面了,.htaccess文件在所有的子页面都有效了。404Not Found问题解决了。

要确保 Apache 正确支持 .htaccess 中的重写规则(如你之前提供的代码),你需要完成两个核心步骤:启用 mod_rewrite 模块和配置目录权限 AllowOverride。
以下是针对不同操作系统和 Apache 版本的具体操作指南:
第一步:启用 mod_rewrite 模块
Apache 默认可能未启用 URL 重写模块,你需要手动开启它。
2. Linux (CentOS/RHEL/Fedora 系列) 或 Windows (XAMPP/phpEnv等)
你需要编辑主配置文件 httpd.conf。
- 找到配置文件:
- CentOS/RHEL:
/etc/httpd/conf/httpd.conf - Windows (XAMPP):
xampp/apache/conf/httpd.conf - Windows (phpEnv):
phpEnv/Apache/conf/httpd.conf
- CentOS/RHEL:
- 用文本编辑器打开文件,搜索
LoadModule rewrite_module。 - 找到类似下面的一行:
apache
#LoadModule rewrite_module modules/mod_rewrite.so - 删除行首的
#号,使其变为:apache
注意:如果找不到这一行,请检查LoadModule rewrite_module modules/mod_rewrite.somodules目录下是否有mod_rewrite.so文件,并手动添加上述代码。
第二步:设置 AllowOverride 为 All
即使模块启用了,如果目录权限设置为 None,Apache 也会忽略 .htaccess 文件。你需要修改主配置文件或虚拟主机配置。
- 打开主配置文件(同上,
httpd.conf、apache2.conf或虚拟主机配置文件vhost.conf)。 - 找到对应网站根目录的
<Directory>区块。例如,如果你的网站在/var/www/html或D:/www:apache
<Directory "/var/www/html"> # 其他配置... </Directory> - 在该区块内,找到
AllowOverride指令。 - 将其值修改为
All:apache
说明:<Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride All <-- 关键修改点 Require all granted </Directory>AllowOverride All:允许.htaccess覆盖所有配置(包括重写、认证、选项等)。- 如果出于最小权限原则,至少需要设置为
AllowOverride FileInfo AuthConfig,因为mod_rewrite属于FileInfo类别。但为了兼容性和方便,通常直接设为All。
第三步:重启 Apache 服务
修改配置文件后,必须重启服务才能生效。
Linux (Systemd)
bash
# Debian/Ubuntu sudo systemctl restart apache2 # CentOS/RHEL sudo systemctl restart httpd
Windows (XAMPP/phpEnv/WAMP)
- 通过控制面板点击 "Stop" 然后 "Start" Apache。
- 或者在服务管理器中重启 "Apache2.4" 服务。
常见问题排查
- Windows 下 .htaccess 无法保存?
Windows 资源管理器不允许直接创建以.开头的文件。请使用记事本,选择“另存为”,文件名输入".htaccess"(带双引号),编码选择UTF-8或ANSI。 - 子目录不生效?
AllowOverride不会自动继承到所有子目录的独立配置块中。确保你的<Directory>路径覆盖了项目所在的所有层级,或者直接在网站根目录设置AllowOverride All。 - Apache 2.4 语法警告?
如果你在使用 Apache 2.4+,请确保<Directory>块中使用的是Require all granted而不是旧版的Order allow,deny/Allow from all,虽然旧版在某些兼容模式下仍能工作,但建议更新为新语法以避免冲突。
5、运行Apache
1)开始 --- 运行或win+r,输入cmd ,打开命令提示符。
输入d:回车;cd tool\Apache24\bin回车; httpd -t回车;
如果httpd.conf配置正确的话,输入httpd -t回车后,查看是否有错误。
如下图所示:正确。

解决AH00558: HTTPD: COULD NOT RELIABLY DETERMINE THE SERVER'S FULLY QUALIFIED DOMAIN NAME, USING LOCAL

#ServerName www.example.com:80
改成
ServerName localhost:80
2)执行命令:httpd -k install -n Apache2.4,安装Apache服务
httpd -k install -n Apache2.4 #-n后面表示自定义访问名称
用管理员权限打开cmd


4、卸载Apache
执行命令
sc delete apache2.4

或者执行命令:
httpd -k uninstall -n apache2.4

2024.5.30更新(新版 Apache 2.4.59-240404 Win64)

启动Apache服务。浏览器访问localhost,出现:It works!成功启动。
双击运行解压目录/bin下的ApacheMonitor.exe


6.测试:
在D:\tool\www根目录新建index.php文件
<?php
echo "Hello World!";
?>

在浏览器访问 http://127.0.0.1:8081/index.php
显示Hello World!即配置成功

<?php
phpinfo();
?>

方案三:手动配置 Apache 2.4 + PHP 7.4 + MySQL
此方法适用于需要完全掌控组件版本、学习底层原理或特定依赖场景。
1. 准备工作
- Visual C++ 运行库:Apache 2.4 和 PHP 7.4 通常需要 Visual C++ Redistributable for Visual Studio 2015-2022。请先从微软官网下载并安装。
- 系统位数确认:确保下载的 Apache、PHP 和 MySQL 版本与您的 Windows 系统位数(x64 或 x86)一致。
2. 安装 Apache 2.4
- 下载:从 Apache Lounge 或 ApacheHaus 下载 Apache 2.4 VC14/VC15 x64 版本。
- 解压:解压到
C:\Apache24。 - 配置:
- 打开
C:\Apache24\conf\httpd.conf。 - 找到
Define SRVROOT "/Apache24",修改为实际路径:Define SRVROOT "C:/Apache24"。 - (可选)修改监听端口:若 80 端口被占用,搜索
Listen 80改为其他端口(如 8080)。
- 打开
- 安装服务:
- 以管理员身份打开 CMD。
- 进入 bin 目录:
cd C:\Apache24\bin。 - 安装服务:
httpd -k install。 - 启动服务:
net start Apache2.4或在 bin 目录下运行httpd.exe。
- 验证:浏览器访问
http://localhost,显示 "It works!" 即成功。
3. 安装 PHP 7.4
- 下载:从 php.net 下载 PHP 7.4.x Thread Safe (TS) x64 版本 ZIP 包。注意:Apache 环境下必须使用 Thread Safe 版本。
- 解压:解压到
C:\php。 - 配置 php.ini:
- 复制
php.ini-development并重命名为php.ini。 - 设置扩展目录:找到
;extension_dir = "ext",去掉分号并修改为绝对路径:extension_dir = "C:/php/ext"。 - 启用必要扩展:去掉以下行前面的分号
;:extension=curlextension=gd(或 gd2)extension=mbstringextension=mysqliextension=pdo_mysqlextension=openssl
- 复制
4. 整合 Apache 与 PHP
- 编辑
C:\Apache24\conf\httpd.conf,在文件末尾添加以下内容(路径需根据实际调整):apache
注意:LoadModule php7_module "C:/php/php7apache2_4.dll" <IfModule php7_module> PHPIniDir "C:/php" AddType application/x-httpd-php .php .html .htm </IfModule>php7apache2_4.dll文件名需与您下载的 PHP 版本中的实际 DLL 文件名一致。 - 重启 Apache:在 CMD 中执行
httpd -k restart。 - 测试:在
C:\Apache24\htdocs下创建index.php,内容为<?php phpinfo(); ?>。访问http://localhost/index.php,若显示 PHP 信息页则配置成功。
5. 安装 MySQL
- 下载:从 MySQL 官网 下载 MySQL Installer 或 ZIP Archive。
- 安装:
- Installer 方式:运行安装程序,选择 "Developer Default" 或 "Server Only",按向导设置 root 密码和端口(默认 3306)。
- ZIP 方式:解压到
C:\mysql,初始化数据目录mysqld --initialize-insecure,注册服务mysqld --install,启动服务net start mysql。
- 连接测试:在
index.php中使用mysqli_connect测试数据库连接。
常见问题排查
- 端口占用:如果 Apache 启动失败,常见原因是 80 端口被 IIS、Skype 或其他软件占用。
- 解决方法:修改
httpd.conf中的Listen 80为Listen 8080,访问时使用http://localhost:8080。 - 或者使用命令
netstat -ano | findstr :80查找占用进程并结束它。
- 解决方法:修改
- 缺少 DLL 错误:启动 Apache 或 PHP 时提示缺少
vcruntime140.dll等。- 解决方法:安装 Microsoft Visual C++ Redistributable Package。
- PHP 不解析:访问 php 文件直接下载或显示源码。
- 检查
httpd.conf中LoadModule路径是否正确,AddType是否配置,以及是否重启了 Apache。
- 检查
- 权限问题:手动配置时,确保 Apache 对网站根目录(htdocs)有读取权限。
PHP与sql server连接测试
【驱动文件安装】
1、下载驱动文件,在微软官网找到了:
Microsoft Drivers for PHP for SQL Server
下载 Microsoft Drivers for PHP for SQL Server - PHP drivers for SQL Server | Microsoft Learn


Microsoft Drivers for PHP 发行说明 - PHP drivers for SQL Server | Microsoft Learn
2.解压把扩展文件对应的版本移动到PHP对应的目录下的ext目录;
4、更改PHP的配置文件,添加扩展,(以php8.2为例)
extension=php_pdo_sqlsrv_82_ts_x64
extension=php_sqlsrv_82_ts_x64

【 ODBC程序安装】
二、安装ODBC程序
官方下载地址:
Microsoft ODBC Driver for SQL Server - ODBC Driver for SQL Server | Microsoft Learn



系统要求 - PHP drivers for SQL Server | Microsoft Learn
Microsoft Drivers for PHP 支持矩阵 - PHP drivers for SQL Server | Microsoft Learn



php使用sqlserver
1、安装ODBC程序
官方下载地址:Download ODBC Driver for SQL Server - ODBC Driver for SQL Server | Microsoft Docs
2、下载sqlsrv扩展文件
官方下载地址:Download the Microsoft Drivers for PHP for SQL Server - PHP drivers for SQL Server | Microsoft Docs
3、把扩展文件对应的版本移动到PHP对应的目录下的ext目录;
4、更改PHP的配置文件,添加扩展,(以php8.2为例)
extension=php_pdo_sqlsrv_82_ts_x64
extension=php_sqlsrv_82_ts_x64



5、重启apache服务,测试连接5.
<?php
$serverName = "aliwks.cn,5768";
$connectionInfo = array( "Database"=>"DBAliSys", "UID"=>"test_db", "PWD"=>"aliaba123");
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn ) {
echo "1连接成功";
}
else
{
echo "1连接失败";
}
?>
<?php
$server = 'aliwks.cn,5768';
$username = 'test_d';
$password = 'aliaba123';
$database = 'DBAliSys';
$conn = sqlsrv_connect($server, array('UID'=>$username, 'PWD'=>$password, 'Database'=>$database));
if( $conn ) {
echo "2连接成功";
}
else
{
echo "2连接失败";
}
?>

更多推荐


所有评论(0)