Apache2.4+php5.5+mysql5.5环境配置问题,phpinfo中不显示mysql扩展项


在用Apache2.4与php5.5配置独立环境的时候,打印phpinfo也显示成功,能看到开启的扩展项,但是就是不显示mysql的,也打开了mysql的扩展就是不显示,却显示了mysqlnd,测试连接mysql数据库也连接不上。不知道是什么原因

apache2.4 php mysql

tusoma 9 years, 12 months ago

PHP 从 5.5 开始废弃了原始的 MySQL 扩展,需使用 MySQLi 或 PDO_MySQL 扩展作为替代。

倦怠拖延强迫症 answered 9 years, 12 months ago

PHP从5.4开始默认采用mysqlnd实现mysql,mysqli,pdo_mysql.
编译时,PHP5.3这样启用mysqlnd支持:


 --with-mysql=mysqlnd
--with-mysqli=mysqlnd
--with-pdo-mysql=mysqlnd

PHP5.4后留空则默认启用mysqlnd:


 --with-mysql
--with-mysqli
--with-pdo-mysql

PHP7开始不再支持--with-mysql.

另外,如果你编译时没有添加 --with-mysql 配置项,自然也是不能使用mysql这个扩展的函数的.不过,PHP7开始将废弃mysql扩展,用户应该使用mysqli和pdo_mysql扩展.

PHP5.4.x开始默认使用mysqlnd连接mysql,区别于以前的libmysql,PHP内建支持mysqlnd,而且采用PHP license授权,避免了任何可能存在的版权问题.
http://www.php.net/manual/zh/mysql.installation.php
mysqlnd并不像libmysql那样作为通用库,它是专门为PHP而写的一个库.libmysql是直接访问数据库的,而mysqlnd是通过Zend访问数据库,有着更好的性能,可以在phpinfo()中查看到mysqlnd信息.以前编译PHP时,必须先安装MySQL,然后用--with-mysql=DIR指定MySQL的位置,有了内置的mysqlnd本地驱动,就不需要这样了.

除了解决版权问题外,mysqlnd比libmysql更快,更节省内存,而且提供了丰富的性能统计功能,也更方便PHP的编译.mysqlnd作为一个PHP扩展,跟PHP是紧耦合的,使用的是PHP的内存管理系统,所以内存占用要比libmysql少,效率也更高.可以用memory_get_usage()跟踪mysqlnd的内存使用,同时也受memory_limit的内存限制.
http://php.net/manual/en/mysqlnd.overview.php

登陆一次忘个号 answered 9 years, 12 months ago

Your Answer