【本文会持续更新 新版安装】

2024.5.26 安装  PHP 8.4.3

环境说明

  1. windows:windows 11  x64
  2. apache: Apache 2.4.58
  3. php :PHP 8.4.3
  4. 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配置中指定其路径。

操作步骤:

  1. 下载最新CA证书包‌:

    • 从官方源下载最新的 cacert.pem 文件。建议使用以下链接:
    • 下载后,将文件保存到服务器的一个安全目录,例如 D:\php\cacert.pem(Windows)或 /etc/ssl/certs/cacert.pem(Linux)。
  2. 配置 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进程有该文件的读取权限。
  3. 重启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. 首选方案‌:采用‌第1种方法‌,下载最新的 cacert.pem 并配置 php.ini。这是标准、安全的做法。
  2. 次选方案‌:如果无权限修改服务器配置,使用‌第2种方法‌,在代码中指定证书路径。
  3. 临时方案‌:仅在开发环境且明确风险的情况下,使用‌第3种方法‌进行快速测试,但上线前务必修正。
  4. 辅助检查‌:完成上述配置后若问题依旧,请检查‌第4点‌的系统时间。

PHP安装成功测试,大前提,Apache是开启状态

二、下载安装配置Apache:

1、Apache下载

Apache 中文网 官网 (p2hp.com)

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

  1. 找到配置文件:
    • CentOS/RHEL: /etc/httpd/conf/httpd.conf
    • Windows (XAMPP): xampp/apache/conf/httpd.conf
    • Windows (phpEnv): phpEnv/Apache/conf/httpd.conf
  2. 用文本编辑器打开文件,搜索 LoadModule rewrite_module
  3. 找到类似下面的一行:
     

    apache

    #LoadModule rewrite_module modules/mod_rewrite.so

  4. 删除行首的 # 号‌,使其变为:

    apache

    LoadModule rewrite_module modules/mod_rewrite.so

    注意:如果找不到这一行,请检查 modules 目录下是否有 mod_rewrite.so 文件,并手动添加上述代码。

第二步:设置 AllowOverride 为 All

即使模块启用了,如果目录权限设置为 None,Apache 也会忽略 .htaccess 文件。你需要修改主配置文件或虚拟主机配置。

  1. 打开主配置文件(同上,httpd.confapache2.conf 或虚拟主机配置文件 vhost.conf)。
  2. 找到对应网站根目录的 <Directory> 区块。例如,如果你的网站在 /var/www/html 或 D:/www

    apache

    <Directory "/var/www/html"> # 其他配置... </Directory>

  3. 在该区块内,找到 AllowOverride 指令。
  4. 将其值修改为 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
  • 配置‌:
    1. 打开 C:\Apache24\conf\httpd.conf
    2. 找到 Define SRVROOT "/Apache24",修改为实际路径:Define SRVROOT "C:/Apache24"
    3. (可选)修改监听端口:若 80 端口被占用,搜索 Listen 80 改为其他端口(如 8080)
  • 安装服务‌:
    1. 以‌管理员身份‌打开 CMD。
    2. 进入 bin 目录:cd C:\Apache24\bin
    3. 安装服务:httpd -k install
    4. 启动服务: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‌:
    1. 复制 php.ini-development 并重命名为 php.ini
    2. 设置扩展目录:找到 ;extension_dir = "ext",去掉分号并修改为绝对路径:extension_dir = "C:/php/ext"
    3. 启用必要扩展:去掉以下行前面的分号 ;
      • extension=curl
      • extension=gd (或 gd2)
      • extension=mbstring
      • extension=mysqli
      • extension=pdo_mysql
      • extension=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 测试数据库连接。

常见问题排查

  1. 端口占用‌:如果 Apache 启动失败,常见原因是 80 端口被 IIS、Skype 或其他软件占用。
    • 解决方法:修改 httpd.conf 中的 Listen 80 为 Listen 8080,访问时使用 http://localhost:8080
    • 或者使用命令 netstat -ano | findstr :80 查找占用进程并结束它。
  2. 缺少 DLL 错误‌:启动 Apache 或 PHP 时提示缺少 vcruntime140.dll 等。
    • 解决方法:安装 Microsoft Visual C++ Redistributable Package。
  3. PHP 不解析‌:访问 php 文件直接下载或显示源码。
    • 检查 httpd.conf 中 LoadModule 路径是否正确,AddType 是否配置,以及是否重启了 Apache。
  4. 权限问题‌:手动配置时,确保 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连接失败";
}
 
?>

更多推荐