2 sinat 21684855 sinat_21684855 于 2015.06.06 10:48 提问

第一次自己做网站,搭建WAMP,MSsql连不上,实在不知道是为什么。请大家帮忙看看还能是什么原因?

第一次用Win7x64+Apache2.4+MSsql2012/2008+PHP5.6.9搭建WAMP来做网站,Apache已经装好,PHP也连上了,现在卡在了连接SQL的地方。
在微软官网Microsoft Drivers for PHP for SQL Server上下载了SQLSRV32.EXE,使用了php_sqlsrv_56_ts.dll和php_pdo_sqlsrv_56_ts.dll,按着网上的各种配置要求改做的都做了,但是依然报错Fatal error: Call to undefined function sqlsrv_connect() in D:\WAMP\Apache24\htdocs\phpinfo.php on line 16,能想到的办法都试过了,还是不行,还请各位指导!_
PS:
1.ntwdblib.dll_2000.80.194.0用的这个,拷在了D:\WAMP\php下和C:\Windows\System32下。
2.这一系列操作也做了[运行 SQL Server 配置管理器:SQL Server Configuration Manager,打开协议 Protocols, 允许命名管道 "named pipes" 和 "tcp/ip" , 右键点击 "tcp/ip",打开属性 Properties 标签 "IP addresses" ,在 TCP 动态端口 "TCP Dynamic Ports" 填入 1433 ]
3. php.ini里面 extension=php_sqlsrv_56_ts.dll extension=php_pdo_sqlsrv_56_ts.dll 都有,mssql.secure_connection = On也都有
4.apache服务器重启了很多次, httpd -k restart
5. test文件是D:\WAMP\Apache24\htdocs\phpinfo.php 内容见图片_图片说明

9个回答

zdl543
zdl543   2017.07.05 15:19

一样的问题!网上怎么也找不到答案!!!! WAMP 版本 Apache 2.4.23 PHP 5.6.25 。微软官网上下载的扩展,php_pdo_sqlsrv_56_ts.dll,版本应该没有错。官网上也没区分64位和32位。但运行WAMP时就是加载不成功。为什么会加载不成功呢??

PHP Warning: PHP Startup: Unable to load dynamic library 'D:/wamp64/bin/php/php5.6.25/ext/php_sqlsrv_56_ts.dll' - %1 ������Ч�� Win32 Ӧ�ó���

in Unknown on line 0

zdl543
zdl543   2017.07.05 15:47

找到原因了。

今天配置服务器需要用PHP和Sqlserver2008数据库,网上找了一些资料,基本上都是说需要下载微软的驱动放在ext文件夹后,再在php.ini中增加如下配置:
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_56_ts.dll
[PHP_SQLSRV]
extension=php_sqlsrv_56_ts.dll
最后重启服务器即可,但我重启了apache之后在phpinfo中还是没有看到sqlsrv的扩展,后来在百度贴吧http://tieba.baidu.com/p/3214930266中找到了问题关键:

原来微软官方提供的microsoft drivers 3.2 for php for sql server并不支持64位的php版本,一些非官方的3.0.2.2倒是单独提供了64位版本的编译,[url]http://链接:http://robsphp.blogspot.co.uk/2012/06/unofficial-microsoft-sql-server-driver.html[/url](这个在墙外打不开),
不过还好有热心网友提供了百度的分享,http://pan.baidu.com/s/1dDIRpJF,
这就是最终比较完美的解决方案了,下载好,里面会有32位和64位的扩展,解压对应php版本需要的扩展,然后在php.ini中添加extension=php_sqlsrv_版本号_线程安全版本号.dll,比如extension=php_sqlsrv_56_ts.dll,64位php亲测可行,如果是32位的还是建议使用微软官方提供的3.2ctp版的http://www.microsoft.com/en-us/download/details.aspx?id=20098

同时大家可以参考“嘿Linux”博客:
http://heilinux.blog.51cto.com/6123663/1584281

Carry_Dominator
Carry_Dominator   2015.06.06 11:19

看看你的SQL服务器名字、密码和你在代码里写的一样不,就是一开始登录SQL服务器时你是用WINDOWS身份验证还是SA登录的

sinat_21684855
sinat_21684855 SQL名字密码确定是一样的。您说的 一开始登录SQL服务器时是用WINDOWS身份验证还是SA登录的,这个 是在哪里看?怎么设置的呢?不是用这样的php代码就可以直接访问数据库的吗?我从来没有用过数据库,不知道怎么访问,还请详细说说,谢谢!
大约 3 年之前 回复
caozhy
caozhy   Ds   Rxr 2015.06.06 11:19
sinat_21684855
sinat_21684855 多谢您给的这么多经验分享,可是我的这个.php文件打开就只报Fatal error: Call to undefined function sqlsrv_connect() 这一句错,我也不知道是26还是40啊,应该是还没有配置好,php还不认识mssql呢。。。
大约 3 年之前 回复
caozhy
caozhy   Ds   Rxr 2015.06.06 11:22

Fatal error: Call to undefined function sqlsrv_connect() 参考
http://blog.csdn.net/sptoor/article/details/12409547

sinat_21684855
sinat_21684855 我按这个帖子试过,但是代码根本就跑不到显示错误信息的那段,在sqlsrv_connect()就报错跳出了,这种情况应该怎么办呢?
大约 3 年之前 回复
frank_20080215
frank_20080215   2015.06.06 15:45

估计是SQL Server2008和SQL Server 2008 Express的设置小差异,没弄清楚

sinat_21684855
sinat_21684855 您是说extension=php_sqlsrv_56_ts.dll extension=php_pdo_sqlsrv_56_ts.dll 这里吗?我52到56全下了放在那个文件夹里了,可还是不行啊。。。
大约 3 年之前 回复
yk19851111
yk19851111   2015.06.07 00:04

下载个不同的php对应的数据库扩展试试!

zhang197093
zhang197093   2015.06.08 10:25

Call to undefined function sqlsrv_connect()

_报这个错说明你的PHP sqlserver扩展没有加载成功,用phpinfo()看一下里面有没有_sqlserver扩展的相关信息

Carry_Dominator
Carry_Dominator   2015.06.06 11:16
<connectionStrings>
    <add connectionString="server=.;uid=sa;pwd=401;database=VoteDB" name="connstr"/>
</connectionStrings>
public static DataTable GetTable(string strSql)
{
    SqlConnection conn = CreatConn();
    SqlCommand cmd = new SqlCommand(strSql, conn);
    SqlDataAdapter daap = new SqlDataAdapter(cmd);
    DataTable dtTable = new DataTable();
    try
    {
        daap.Fill(dtTable);
        if (dtTable.Rows.Count > 0)
            return dtTable;
        else
            return null;
    }
    catch (Exception ex)
    {

        throw ex;
    }
}
sinat_21684855
sinat_21684855 不好意思,我不太明白您这段代码是什么意思,麻烦您再详细解释解释?多谢多谢!
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!