站长家园(原代码之家)(www.adminjie.com)网站源码,微信源码,游戏源码,商业源码分享平台。
当前位置:网站首页 技术文章 网络编程 正文

php连接mssql失败怎么办

时间:2022-01-04 [网络编程]作者:admin 浏览:8 次

php连接mssql失败的解决办法:1、在php.ini文件中找到extension=php_mssql.dll并去掉前面的分号;2、把php_mssql.dll文件复制到“c:/windows/system32/”目录下;3、重启iis。

php连接mssql失败怎么办

本文操作环境:windows7系统、PHP5版、DELL G3电脑

php连接mssql失败怎么办?

关于PHP无法连接MSSQL数据库的解决办法:

php 数据库 sql server extension sqlserver 服务器

今天接到一个问题要php5+iis6+mysql5的平台环境上访问sqlserver2000的数据,结果运行时发现php连接远程mssql数据库出错,出错代码如下:

Warning: mssql_connect(): Unable to connect to server:

想想以前都是没问题的,怎么回事呢?后来去网上搜索,发现一篇文章,才发现原来服务器是需要安装mssql才能用php连接mssql的,本来新服务器上 我是不需要用到mssql的,但是现在没办法了,只能把扩展了,扩展了mssql之后就没问题了。

扩展方法:

1、在c:/windows/php.ini文件中找到 

;extension=php_mssql.dll 把前面的分号去掉

找到

;extension_dir = "./" 把扩展库目录改为php的库目录如:extension_dir = "c:/php/ext"

2、把php_mssql.dll文件复制到c:/windows/system32/目录下

3、重启iis。

下面是找到的一篇文章。

php配置:

在php.ini文件里设置如下,找到

;extension=php_mssql.dll 把前面的分号去掉

找到extension_dir = d:/extension/

你的php.ini里面可能不是d:/extension/

改成在php安装目录下面的extensions目录下面的php_mssql.dll,所在的路径,如果你没有把它移动到其他地方(假设你的php安装路径是d:/php)

就改成extension_dir=d:/php/extensions/

然后重新启动web服务器

这一点很容易做到,但是做完这样的设置后还是连不上,错误的信息如下:

MS SQL Server 数据库连接错误!请检查数据库主机变量设置是否正确!!!

而主机的变量设置我是一遍一遍的检查,那些设置是一点问题都没有的,翻遍网页,找到了下面的这点蛛丝马迹:

php.com资料:
I am trying to connect to SQL Server 2000 from PHP
I bumped to following warning:
Warning: mssql_connect(): Unable to connect to server: SERVER/Portal
....... on line 5
on line 5 there is:
$db_connect = mssql_connect('SERVER/Portal', 'sa', 'my_passwd');
I did the following
1.enabled php_mssql.dll extension in PHP.ini
2.every dll is in proper place(System32 or PHP folder),including ntwdblib.dll
I search lots of profile throught web ,but no one give me proper answer to resolve it.
after a few hour ,I found the problem was caused by
ntwdblib.dll ,which version is 7.00.839 ,when I replaced old ntwdblib.dll with the new
ntwdblib.dll ,which version is 8.00.194 ,all problem are solved.
We had some, read A LOT, of problems with MSSQL under Windows 2003.
We had 2 the same windows, php, php-ini, everything machines but only one could connect.
Unable to connect was the error message.
Finnaly we checked the version of ntwdblib.dll and the one distributed with PHP was 7.00....
and the version of the one on the SQL Server install was 8.00.... so we copied this one in
the php and apache dir and it worked.

问题就这样被找到了,惹祸的是它 ntwdblib.dll

ntwdblib.dll的主要作用是提供sql server连接服务。

我用的php版本是5.25,在安装它的服器的 windows/system32/ 下我查到ntwdblib.dll文件的版本是2000.2.8.0 ,这个版本支持的是sql server 7.0, 因为安装PHP时会把dlls下面的所有文件覆盖到系统

目录下,所以当我用它去连接 sql server 2000 的时候当然会是无法连接了。

后来我在一台正常安装sql server 2000 的服务器上查到 ntwdblib.dll的版本是 2000.80.2039.0,我把这个文件拷过去,覆盖掉以前的版本,重启服务器后,一切正常。

补充:如果数据库名的开头是数字时也会提示无法打开,这时要做的很简单,把数据库的名字用中括号 [ ] 括起来就搞定了,如 123bbs 改写成 [123bbs]就没有问题了,另外如果你的数据库名字与sql server中的保留字冲突的话也会出现这种情况,用中括号的方法一样可以解决。

最终,PHP无法正确连接sql server 2000的问题终于解决了,虽然耗费大半天的时间,但收获还是很大的,现在把它贴出来,也让遇到同样问题的兄弟们少走一些弯路。

最后,如果您的目标MSSQL电脑装有防火墙,请开放1433端口,windows xp系统更是如此!

看了以上资料让装sqlserver2000的朋友传“ntwdblib.dll ”文件我,自己本地测试果然成功,但把上传到服务器上,结果info()没有mssql扩展了,本来已经加载的怎么就没有了,把php.ini文件和本地对比基本没有差别,就是扩展不了,本地一切正常。

最后发现还是“ntwdblib.dll ”的版本问题,找到个更高的“ntwdblib.dll ”版本替换。

推荐学习:《PHP视频教程

以上就是php连接mssql失败怎么办的详细内容,更多请关注站长家园其它相关文章!

本文标签:  phpmssql

转载请注明来源:php连接mssql失败怎么办

本文永久链接地址:https://www.adminjie.com/post/7115.html

免责声明:
本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

附:
二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!

版权声明:
一、本站致力于为软件爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的部分源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、我站提供用户下载的所有内容均转自互联网。如有内容侵犯您的版权或其他利益的,若有侵犯你的权益请:提交版权证明文件到邮箱 2225329873#qq.com(#换为@) 站长会进行审查之后,情况属实的会在三个工作日内为您删除。

  • 站长家园(原代码之家)会员升级
  • 最新文章
    • oracle中not的用法是什么

      oracle中not的用法是什么

      在oracle中,not用于对指定的条件取反,当指定的条件为真时,not的结果就是假,当指定的条件为假时,not的结果就是真,语法为“Selectwhere...

    • Vue3中5个可以提高开发效率的小知识【整理分享】

      Vue3中5个可以提高开发效率的小知识【整理分享】

      本篇文章给大家聊聊Vue3开发,整理分享5个可以提高开发效率的小知识,让你在Vue3的项目开发中更加丝滑,希望对大家有所帮助!最近鼓捣了一下Vue3+...

    • php5.6.31如何编译安装

      php5.6.31如何编译安装

      php5.6.31编译安装的方法:1、添加epel源;2、安装依赖;3、下载并解压php5.6.31;4、修改php-fpm.conf;5、启动php-fpm即...

    • oracle怎样进行空值替换

      oracle怎样进行空值替换

      在oracle中,可利用nvl()函数进行空值替换,该函数用于从两个表达式中返回一个非null值,语法为“nvl(字段值,替换值)”;当字段值的结果为null值...

    • oracle数据库有什么用

      oracle数据库有什么用

      oracle数据库的作用:1、oracle可以按照数据结构来组织、存储和管理数据;2、oracle能够适用于大型、中型和微型计算机的关系数据库管理。本教程操作环...

    热门文章