环境是:
Win XP、Apache 2.2、PHP 5.2.17、Mysql 5.5.23安装apache和PHP的时候都没有问题,Apache解析PHP也都正常。后来我安装完了Mysql,也确实安装成功了,在命令行访问Mysql都是成功的,3306端口也确实是Mysql在监听:
 TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING       3296
 [mysqld.exe]于是我在在php.ini做了如下设置:extension_dir = "D:/MyEnv/php5/ext"extension=php_bz2.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo.dll
重启Apache后用mysql_connect()做测试,但它总是报Call Undifined Function。
然后我就用phpinfo()查看了一下,发现没有载入Mysql库,我又琢磨了好半天都没成功~~~
我的步骤应该没有问题啊,为什么载入不了Mysql库呢??谢谢大家!

解决方案 »

  1.   

    1.确认扩展的路径正确
    2.把php安装目录中的“libmysql.dll、php5ts.dll”复制到 C:/windows/system32 目录
    3.把 php.ini 复制到 C:/windows 目录
    重启apache
      

  2.   

    phpinfo 显示的php.ini文件是否是你修改过的文件?
     php的扩展目录内是否存在需要用到的dll文件?
    php.ini文件内ext目录路径是否正常?
      

  3.   

    谢谢你!!!成功了!
    但能帮我解释下为什么复制“libmysql.dll、php5ts.dll”吗?我看的相关教程上都没有这一步~
    另外我没有把php.ini复制到c:/windows下,但也成功了。如果复制过去的话,那apache是读取httpd中指定的“PHPIniDir”参数的值,还是读取c:/windows下的php.ini呢? 
      

  4.   

    再补充一下我刚才的问题,因为我在phpinfo()页面里看到有两个参数:Configuration File (php.ini) Path    C:\WINDOWS  
    Loaded Configuration File            D:\MyEnv\php5\php.ini  这两个不都是读取php.ini吗?那到底是读哪个呢?
      

  5.   

    1、是的。而且当我修改php.ini的时候会影响到phpinfo()显示的内容。
    2、有php_mysql.dll等相关文件。
    3、嗯,是正确的。就是按照“dream1206”说的把那两个文件复制到C:/windwos/system32下就行了,但不知道为什么~
      

  6.   

    如果你的 httpd.conf 中已经设置了 PHPIniDir,并指向了正确的路径
    在这种情况下还要拷贝文件的话,说明你安装的 apache 有问题
      

  7.   


    你装的八成是什么ghost之类的系统吧?
      

  8.   

    其实我也一直不清楚phpini为什么会在windows目录下,为什么又要拷贝到system32下。只是别人怎么说我就怎么做,错了才再想办法
    找了一会找到参考说明: 
    ini位置说明:http://us2.php.net/manual/zh/configuration.file.php
    完整的配置过程:
    http://www.impng.com/web-dev/how-to-install-apache-php-mysql.html至于你问的为什么要拷贝到system目录下,我没找到。你再看看其他人
      

  9.   

    嗯PhpIniDir肯定是正确的,因为apache已经可以解析PHP了。
    你所指的文件是“libmysql.dll、php5ts.dll”这两个文件吗?可是我在安装apache的时候也是一切正常啊,而且可以正常启动、停止apache。嗯可能是装的GHOST,和这个有关系???嗯非常感谢你啊!!!
      

  10.   

    php.ini为什么会在windows目录下,为什么又要拷贝到system32下这是一个操作系统的默认搜索路径问题
    如果我们在某个目录下面执行一个命令 command,于是操作系统就在这个目录下查找 command 是否存在,如存在就执行(下同)否则就到 %system32% 去查找,如果还是不存在,就沿环境变量 path 给出的范围依次查找,当查了一遍还没找到,就会报错 command 不存在既然查找可能会遍历整个硬盘,那就不如预先将需要的文件放在查找链之中,并经可能的靠前了
      

  11.   

    嗯,我按照你说的这个顺序,先把system32下的两个文件删除了,然后把“D:/MyEnv/php5;”加入到环境变量的PATH中,然后重启apache,但是还是不行