在Zend Studio中调试时不能连接Mysql的问题
时间:2010-04-09 来源:xhq6632
在使用Zend Studio 5.0.0版本调试PHP时,如果在调试的代码中设计到创建mysql数据库的连接,总是会提示“mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client”这种错误(配置zend所使用的php版本为php4时),或者提示“call to undefined function mysql_connect()”配置zend所使用的php版本为php5时)。虽然在apache中,php程序能正常运行,但在zend里调试就是会提示上述的错误。
在google上寻求这个问题的解决办法,发现有很多人提出了相同的问题,但是都没有得到满意的回答,也有很多提问者词不达意的,致使自己没有得到解决问题的帮助.经过继续搜索找到了一篇很有帮助的文章,参考他的内容终于解决了问题.
在安装Zend的时候,Zend其实在其安装目录已经创建了PHP的解析器,包括两个版本,php4(4.4.0版)和php5(5.0.4版),在zend里调试php时,zend会使用这两个版本的PHP解析器来解析PHP,而不会使用系统安装的PHP。
对于配置zend使用php4时,zend会使用php4内置的mysql库来创建mysql连接,php4.4.0所使用的Cliend API版本是3.23.49,而我所使用的mysql数据库是4.1.7,所以调试时调用mysql_connect()时,会提示Client does not support authentication protocol requested by server; consider upgrading MySQL client。
而如果配置zend使用php5时,由于php5是没有内建mysql模块的,所以会出现mysql_connect()为未定义函数的错误。
对于配置zend使用php4时,解决上面错误的办法可能是要更换所使用的mysql数据库到低版本,以使3.23.49版的Client API能访问mysql。而对于配置zend使用Php5的情况,所要做的就是使zend的php5能加载mysql模块,从而可以访问mysql数据库。具体步骤如下:
1.在你的zend的安装目录的bin\php5中(如:C:\Program Files\Zend\ZendStudioClient-5.0.0\bin\php5),创建ext目录
2.将php_mysql.dll或php_mysqli.dll拷贝到该目录
3.将libmysql.dll拷贝到bin\php5目录
4.修改bin\php5目录下的php.ini,增加下面两行,使zend的php5能找到mysql模块
extension_dir=”C:\Program Files\Zend\ZendStudioClient-5.0.0\bin\php5\ext”
extension=php_mysql.dll 这里需要注意的是,php_mysql.dll,php_mysqli.dll,libmysql.dll必须是php5.0.4版本的,也就是说必须是从php.net上下载的php5.0.4版本包里的,而不能是其他版本的,否则zend会报不能加载php_mysql.dll的错误。关键的一点是:一定要看好zend的版本,然后找到和它匹配的php版本,另外,注意extension_dir不要写错了. 另外看到哪篇文章的评论中有人说直接将php.ini文件进行修改
zend_extension_ts=C:\Program Files\Zend\ZendStudio-5.2.0\lib\php5\ZendDebuggerLocal.dll
zend_debugger.allow_hosts=127.0.0.1/32
session.save_path=C:\Program Files\Zend\ZendStudio-5.2.0\tmp extension_dir=d:\php\ext
;extension=php_mbstring.dll
;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_ifx.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
extension=php_mssql.dll
;extension=php_msql.dll
extension=php_mysql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_sockets.dll
;extension=php_sqlite.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
即直接将php的扩展添加到php.ini中,并指明扩展类的路径即可兼容其它版本的php,但是我尝试没有成功.
1.在你的zend的安装目录的bin\php5中(如:C:\Program Files\Zend\ZendStudioClient-5.0.0\bin\php5),创建ext目录
2.将php_mysql.dll或php_mysqli.dll拷贝到该目录
3.将libmysql.dll拷贝到bin\php5目录
4.修改bin\php5目录下的php.ini,增加下面两行,使zend的php5能找到mysql模块
extension_dir=”C:\Program Files\Zend\ZendStudioClient-5.0.0\bin\php5\ext”
extension=php_mysql.dll 这里需要注意的是,php_mysql.dll,php_mysqli.dll,libmysql.dll必须是php5.0.4版本的,也就是说必须是从php.net上下载的php5.0.4版本包里的,而不能是其他版本的,否则zend会报不能加载php_mysql.dll的错误。关键的一点是:一定要看好zend的版本,然后找到和它匹配的php版本,另外,注意extension_dir不要写错了. 另外看到哪篇文章的评论中有人说直接将php.ini文件进行修改
zend_extension_ts=C:\Program Files\Zend\ZendStudio-5.2.0\lib\php5\ZendDebuggerLocal.dll
zend_debugger.allow_hosts=127.0.0.1/32
session.save_path=C:\Program Files\Zend\ZendStudio-5.2.0\tmp extension_dir=d:\php\ext
;extension=php_mbstring.dll
;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_ifx.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
extension=php_mssql.dll
;extension=php_msql.dll
extension=php_mysql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_sockets.dll
;extension=php_sqlite.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
即直接将php的扩展添加到php.ini中,并指明扩展类的路径即可兼容其它版本的php,但是我尝试没有成功.
相关阅读 更多 +