您的位置:首页 > 运维架构 > Apache

win7配置Apache+php+mysql

2016-07-06 22:25 405 查看
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方面要做的是

[plain] view
plain copy

 print?

启用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 中

[plain] view
plain copy

 print?

<span style="font-size:18px;">LoadModule php5_module C:/myenv/php/php5apache2_2.dll  

PHPIniDir "C:/myenv/php"  

AddType application/x-httpd-php .php .phtml</span>  

小结一下:

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中,配置成了 [b]C:/myenv/php/ext  (这样就不会报找不到 php_mysql.dll模块 的错误)[/b]

那么整个 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的话,就不需要这步操作了。


apache+php+mysql+phpmyadmin 自定义安装配置环境

准备软件:



建议:

安装的时候安装到同一文件夹,利用管理

文件夹不要中文名

安装完一个测试一个



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.dll

PHPIniDir “~php安装路径"

AddType 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

4,在php.ini 指定php的扩展库路径

; 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 即可.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: