PHP :Call to undefined function mysql_connect()
今天配置apache ,php,mysql 的时候,一直报(Call to undefined function mysql_connect()),PHP一直连接不上数据库,从网上查,答案也都是千篇一律。后来经过慢慢调试总的来说从以下几个方面来查
1:php.ini配置文件中 extension_dir 前面分好去掉,同时把目录指向php的ext目录
如:extension_dir = "D:/shenghuo/php/ext"
2:php.ini中 以下几项的分号去掉
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_gd2.dll
3:把php5ts.dll拷贝到system32目录下
4:从mysql的安装目录下找到libmySQL.dll拷贝到system32以及php安装根目录和根目录/ext 下(记住是从mysql的安装目录找该dll而不是
php 的安装根目录)
5:指定httpd.conf中的PHPIniDir参数
如:PHPIniDir "D:/shenghuo/php/php.ini" (需要要指定php.ini的绝对路径)
在自定义配置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方面要做的是
开启后请重启 Apache服务,再测试
如果还是不行
那就说明在Apache加载Httpd.conf 的过程中没有加载成功php.ini 中的这2句话
不信去看,phpinfo( )
搜索一下Mysql字眼,除了mysqlld 的项目,根本找不到 mysql 和 mysqli 这两个东东
原因有两方面:
1,php.ini 中 extension_dir 没有配置好
2,php.ini 没有正常加载
解决第一个问题只需要如下图操作:
第二个问题我们从 phpinfo( ) 中就可以看出
因此我们要确保的是:
在 httpd.conf 中
小结一下:
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的话,就不需要这步操作了。
准备软件:
建议:
安装的时候安装到同一文件夹,利用管理
文件夹不要中文名
安装完一个测试一个
1. apache
参看:
完后 http://locahost
注意:
由于我是在虚拟机中安装,会发现80端口已经不能使用;
因此安装完成后需要到httpd.conf中修改端口
#Listen 12.34.56.78:80
Listen 81
2. php
下载 php 核心包(用于支持php开发 )
VC6就是legacy Visual Studio 6 compiler,就是使用这个编译器编译的。
VC9就是the Visual Studio 2008 compiler,就是用微软的VS编辑器编译的。
那我们如何选择下载哪个版本的PHP呢?
如果你是在windows下使用Apache+PHP的,请选择VC6版本;
如果你是在windows下使用IIS+PHP的,请选择VC9版本;
Non Thread Safe就是非线程安全;
Thread Safe 是线程安全;
官方并不建议你将Non Thread Safe 应用于生产环境,所以我们选择Thread Safe 版本的PHP来使用
php 核心包的安装就是解压
3. 如何将apache 和php 整合
也即是说,怎样才能让apache处理php
1,在apache 的conf目录下 的 httpd.conf加入如下代码:
LoadModule php5_module ~php安装路径/php5apache2_2.dllAddType application/x-httpd-php .php .phtml
把红色的部分,改成实际php 安装的路径(如: C:/myenv/php5.3.5/)即可
LoadModule php5_module C:/myenv/php/php5apache2_2.dll
PHPIniDir "C:/myenv/php"
AddType application/x-httpd-php .php .phtml
2,把 php.ini-development 文件 改成 php.ini
3,在php.ini中可以指定对应的功能模块
extension=php_mysql.dll
extension=php_mysqli.dll
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
extension_dir = "C:/myenv/php/ext/"
测试看看apache和php是否整合成功
重新启动 http://localhost/test.php
多么可笑的错误!
<?php
phpinfo();
?>
4. 安装MySQL数据库
首先要获取资源,http://www.mysql.com
小提示:
1,下载的时候不用去理会注册,登录,直接点击左下角链接即可
2,我们要的是MySQL Installer(Windows),不要选成 MySQL Community Server 了
安装的过程需要提示一下两点:
在运行 mysql-installer-community-5.6.10.0.msi 之前可能环境需要安装 .net Framework 4.0
在运行 .net FM4.0之前 可能还需要安装一个很小的 WIC 软件
开始安装:
测试mysql是否可以用
1. 写一段php 代码来测试是否成功!
//目前你看不懂,没关系
<?php
$conn=mysql_connect("localhost","root","root");
if($conn){
echo "连接mysql数据库ok";
}else{
echo "连接数据库失败";
}
?>
当我们没有对php进行正确配置的时候,会报
Fatal error: Call to undefined function mysql_connect() in C:\myenv\apache\htdocs\test.php on line 2
原因: 目前没有启用mysql功能,在php.ini中
extension=php_mysql.dll
extension=php_mysqli.dll
如果开启了这两个DLL,还是报同样的错误
请参看blog:
http://blog.csdn.net/php1923880282/article/details/8582829
2. 安装一个phpmyadmin(该网站实际可以更好的管理mysql)来看看是否可以使用
把该压缩包直接解压到htdocs目录, 然后可以直接访问
http://localhost/phpMyAdmin/index.php 即可.