必须用spl_autoload_register——它支持多回调、可设优先级、能抛异常、兼容Composer;__autoload已弃用并移除。

别猜路径,PHP 自己会告诉你它在用哪个 php.ini —— 这是唯一可靠的方法。
用 phpinfo() 网页方式确认真实加载的文件
很多人改了 C:\xampp\php\php.ini 却没生效,是因为 Apache 实际加载的是另一个副本,或者压根没加载任何外部配置文件。
- 在
C:\xampp\htdocs\下新建一个info.php,内容只写:<?php phpinfo(); ?> - 浏览器访问
http://localhost/info.php - 按
Ctrl+F搜索Loaded Configuration File - 如果显示路径(如
C:\xampp\php\php.ini),那就是当前生效的文件;如果显示none,说明 PHP 正在用编译时内置默认值,你改任何磁盘上的php.ini都无效
用 php --ini 命令行快速验证 CLI 模式配置
命令行 PHP 和 Web 服务器(Apache)可能加载不同配置,尤其当你用 Composer、Artisan 或脚本调试时,php --ini 显示的是 CLI 模式下实际读取的路径,和网页看到的未必一致。
- 打开命令提示符(Windows)或终端(macOS/Linux)
- 执行:
php --ini - 重点关注输出中
Loaded Configuration File这一行 - 常见误区:XAMPP 控制面板里点 “Shell” 启动的终端,有时 PATH 指向的是系统自带 PHP 而非 XAMPP 自带的,建议直接进
C:\xampp\php\目录再运行php --ini
为什么改了 php.ini 还不生效?三个高频卡点
找到文件只是第一步,改完不生效往往卡在这几个环节:
立即学习“PHP免费学习笔记(深入)”;
- 没重启 Apache:修改后必须彻底停止再启动,XAMPP 控制面板上的 “Restart” 按钮在某些版本中不会重载 PHP 配置,务必点 “Stop” → 等状态变灰 → 再点 “Start”
- 改错了模式:Web 请求走 Apache 模块(
apache2handler),而你用php --ini查的是 CLI 模式,两个php.ini文件可能物理位置不同 - 模板文件没重命名:XAMPP 自带
php.ini-development和php.ini-production,它们不会自动生效——你得手动删掉现有php.ini,再把其中一个重命名为php.ini,否则 PHP 根本不认
扩展启用失败?先盯住 extension_dir 和 extension 的匹配关系
比如加了 extension=openssl 却报 Call to undefined function openssl_encrypt(),大概率不是 OpenSSL 没装,而是路径或架构错配。
- 在
phpinfo()页面搜索extension_dir,确认它的值(如C:\xampp\php\ext)是否真实存在且可读 - 检查该目录下是否有对应扩展文件:
php_openssl.dll(Windows)、openssl.so(Linux/macOS) - 注意架构一致性:64 位 PHP 必须配 64 位
.dll,混用会导致 Apache 启动失败或扩展静默失效 - Windows 下扩展名必须带
php_前缀(如extension=php_curl.dll),而 Linux/macOS 通常不带前缀(extension=curl)
最常被忽略的一点:XAMPP 中 Apache 和 CLI 的 PHP 是同一套二进制,但加载配置的时机和顺序完全不同;Loaded Configuration File 显示什么,你就只能动那个文件——其他同名文件都是幻觉。



















