php 5.3 无法连接 mysql 5.1 主因是扩展未正确加载或驱动不匹配:需确保 php.ini 中 extension_dir 设为绝对路径(如 "d:/php/ext/"),启用 extension=php_mysql.dll 或 extension=php_mysqli.dll,重启 apache,并将 d:\php 加入系统 path 以提供 libmysql.dll。

PHP 5.3 无法连接 MySQL 5.1,大概率是扩展没加载或驱动不匹配,不是版本“不兼容”——这两个版本在 Win7 下本可共存,问题出在配置细节上。
php.ini 中 extension_dir 和 mysql 扩展必须配对
PHP 5.3(VC6 编译版)依赖 php_mysql.dll 或 php_mysqli.dll 连接 MySQL 5.1,但这两个扩展不会自动生效:
-
extension_dir必须设为绝对路径,且末尾带斜杠,例如:extension_dir = "D:/php/ext/"(注意不是"D:/php/ext"或"./ext") -
php_mysql.dll是旧式 API,仅支持 MySQL 4.1+ 协议;php_mysqli.dll更推荐,支持更多特性(如预处理语句) - 确保这两行在
php.ini中已取消注释:extension=php_mysql.dll或extension=php_mysqli.dll - 修改完
php.ini后,必须重启 Apache 服务,phpinfo()页面里才会显示 MySQL 相关模块已加载
Apache 加载 PHP 模块时路径含空格会静默失败
Win7 下若 Apache 安装在 C:\Program Files\ 这类含空格路径中,LoadModule 指令中的 DLL 路径若未加英文双引号,Apache 启动时会跳过该行且不报错:
- 在
httpd.conf中确认这一行写法:LoadModule php5_module "D:/php/php5apache2_2.dll"(路径必须用双引号包裹) -
php5apache2_2.dll是 PHP 5.3 对应 Apache 2.2 的模块文件名,不能错用php5apache2_4.dll(那是 Apache 2.4 的) - 如果 Apache 启动后访问
.php文件直接下载或 500 错误,先检查 Windows 事件查看器 → Windows 日志 → 应用程序,常能看到“找不到指定模块”类提示
MySQL 5.1 默认绑定 127.0.0.1,但 PHP 可能尝试 localhost 导致 socket 失败
MySQL 5.1 在 Windows 上默认监听 TCP 端口(3306),不启用命名管道或本地 socket。而 PHP 的 mysql_connect("localhost",...) 在 Windows 下可能试图走命名管道,结果连不上:
- 改用 IP 地址连接:
mysql_connect("127.0.0.1", $user, $pass)或mysqli_connect("127.0.0.1", $user, $pass, $db) - 检查 MySQL 服务是否真在运行:命令行执行
net start | findstr MySQL,应看到类似MySQL51的服务名 - 确认
my.ini中没有skip-networking,且有bind-address = 127.0.0.1(或注释掉这行,默认即允许本地 TCP) - 防火墙一般不影响本地连接,但若启用了第三方安全软件,可临时禁用测试
最易被忽略的是:PHP 5.3 的 php_mysql.dll 依赖 MySQL 5.1 的客户端库(libmysql.dll),而这个文件必须出现在系统 PATH 中,或与 php.exe 同目录。很多教程漏提这点,导致扩展看似加载成功,实际调用时崩溃。把 D:\php 加进系统环境变量 PATH,是最稳妥的做法。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











