在自定义配置PHP+Mysql时,如果没有配置成功,在连接Mysql时会报错:
Fatal error: Call to undefined function mysql_connect() inC:\myenv\apache\htdocs\test.php on line2
搭建过程参看Blog:
http://blog.csdn.net/php1923880282/article/details/8581505
我实在Windows2003环境中
遇到这样的问题,不要盲目地去网上搜索各种解决方案来尝试;
因为各个环境都是很复杂的,导致这个错误的原因也都不尽相同,最后能试的你头晕脑花都解决不了
我们要找到自己的问题的根源,对症下药,这样解决了问题后方能增强我们对这个环境的理解
这不正是我们自己“找麻烦”来自定义搭建环境的初衷吗?
如果一知半解,还不如直接去用泰国老的Appserv 或者WAMP呢
首先,PHP要想处理Mysql,我们知道在PHP方面要做的是
启用mysql功能,在php.ini中
extension=php_mysql.dll
extension=php_mysqli.dll
开启后请重启 Apache服务,再测试
如果还是不行
那就说明在Apache加载Httpd.conf 的过程中没有加载成功php.ini 中的这2句话
不信去看,phpinfo( )
搜索一下Mysql字眼,除了mysqlld 的项目,根本找不到 mysql 和 mysqli 这两个东东
原因有两方面:
1,php.ini 中 extension_dir 没有配置好
2,php.ini 没有正常加载
解决第一个问题只需要如下图操作:
第二个问题我们从 phpinfo( ) 中就可以看出
因此我们要确保的是:
在 httpd.conf 中
LoadModule php5_module C:/myenv/php/php5apache2_2.dll
PHPIniDir "C:/myenv/php"
AddType application/x-httpd-php .php .phtml
小结一下:
1,确保在php.ini 中加载了 2个 DLL
2,确保在php.ini 中配置了正确的 extension_dir = "C:/myenv/php/ext/" 这个路径是 ./php/ext
3,确保在 httpd.conf 中配置了正确的 PHPIniDir "C:/myenv/php" 这个路径是 ./php
如果小结2中,配置成了 C:/myenv/php/
则在 重启动 Apache的会报错并且无法成功加载2个DLL:
如果小结3中,配置成了 C:/myenv/php/ext (这样就不会报找不到 php_mysql.dll模块 的错误)
那么整个 php.ini 都无法加载到,具体可看本文中phpinfo( )的那张图片中 批注。
关于网上各种解决方法,这里也作一个汇总仅供参考,但是我真心没有用下面的任何一条来解决问题,应该是环境不一样吧:
1、把 ../mysql/bin/libmySQL.dll 拷贝到 php 下面,还有拷贝到 php/ext 目录下
2、将 libmySQL.dll php5ts.dll 两个文件拷贝到 windows/system32 下
3、将 php根目录下面的 php.ini拷贝到 windows目录下,(前提是php.ini必须是配置好的)
4、说需要把libMysql.dll文件拷贝到c:\windows\system32下面,如果在系统环境变量里设置好path的话,就不需要这步操作了。