如果我只是尝试以下,我在sql Server上得到一个登录失败和一个错误日志sql认证不是一个选项.它只接受某个用户的连接.显然,PHP脚本没有在该帐户下运行.
$server = "sqlServerName"; $sqlUser = "username"; $sqlPass = "pw"; $sqlDatabase = "db"; $link = mssql_connect($server,$sqlUser,$sqlPass);
因为我使用PHP 5.3.1 sqlsrv_connect不是一个选项.我试图加载PHP驱动程序,但它只是不工作.我不能更改sql server的身份验证,我不能使用任何其他版本的PHP.
我也不能打开secure_connection,因为我必须能够连接到需要“正常”sql身份验证的其他sql服务器:
如何连接到我有问题的sql server?
更新:将xampp升级到最新版本. PHP现在版本5.6.8即使我安装了必要的驱动程序并将每个单个dll添加到PHP.ini中,仍然无法使用sqlsrv_connect().重新启动了apache几次.任何线索?
error msg: Fatal error: Call to undefined function sqlsrv_connect()
首先,很高兴你从5.3.1更新版本的PHP是古老而且非常不安全的.这是您的系统的一些健全检查.这可能对你什么都不做,但所有这一切都值得检查.
>首先确保您可以使用提供的凭据使用sql Server Management studio连接到sql server.这意味着您在PHP中使用的相同的凭据不是Windows身份验证凭据.您应该能够同时拥有两个连接,以便您可以在同一时间进行更改并测试连接.
>启用tcp. sql server配置管理器 – > sql Server网络配置 – > sqlexpress的协议 – > tcp / ip(右键单击) – >属性 – >启用(是) – > ip地址 – > IPAll – > TCP端口1433 – >好
>启用sql server auth.选择服务器(右键单击) – >属性 – >安全性 – > sql server和windows认证方式 – >好
>打开防火墙上的sql server端口. Windows控制面板 – >系统和安全性 – > Windows防火墙 – >高级设置 – >入站规则 – >新规则 – >端口 – > tcp – > 1433(或任何) – >允许连接 – >下一个 – >名称 – > sql server – >完成 – >重启电脑.
>当然,如果要通过非默认用户进行连接,则需要添加用户:sql server – >安全性 – >登录(右键单击) – >添加登录 – >服务器角色 – >系统管理员 – >好
>如果您进行任何这些更改重新启动sql server:sql server configuration manager – > sql服务器服务 – > sql Server(右键单击) – >重新开始.
>一旦你确认你可以连接管理工作室这里是PHP配置检查:
>您可以通过创建一个PHPinfo()函数来创建扩展本身是否可用.然后搜索pdo_sqlsrv.如果存在,这些检查的其余部分可能不是必需的,但是由于您一直在工作,所以很久以后可能会检查它们.
> PHP的sql_srv扩展名应为版本3.2,PHP 5.6可以获取该库here
>版本3.2需要可以使用的扩展名可用here检查上一个链接的其他要求.您的os可能使用与此处链接的扩展名不同的扩展名.
>找到你的PHP extensions目录.通常是{PHP-install-directory} / ext.确保将下载的sqlsrv库的适当版本复制到此目录中.我的名字叫做“PHP_sqlsrv_55_ts.dll”和“PHP_dpo_sqlsrv_55_ts.dll”你会有56而不是55我认为,“ts”应该匹配你的PHP安装. “ts”表示线程安全,另一个选项是“nts”不是线程安全的.您使用的是依赖于您的PHP安装.
>我的PHP.ini文件包含这些行extension = PHP_sqlsrv_55_ts.dll和extension = PHP_pdo_sqlsrv_55_ts.dll在该顺序.但我不认为秩序很重要.再次,你们将是56,“ts”可能是“nts”.
>如果您根据这些进行任何更改,请确保重新启动apache,然后检查pdo_sqlsrv是否在您的PHPinfo()报告中.另外在重新启动apache后,请检查apache和PHP错误日志,看看是否收到有关PHP尝试加载扩展名的特定错误.如果您需要帮助,请在这里发布.
>一旦通过管理工作室中的auth权限连接到sql server,并且您的PHPinfo()中的pdo_sqlsrv就是您的代码中最后一件事.
>上面的代码还是用于mssql扩展.您可能只是根据最新的更改更新它.对于sql server扩展,您的代码应如下所示:
$connectionInfo = array(
‘UID’=> $dbuser的,
‘PWD’=> $DBPASS,
‘LoginTimeout’=> 1,
);
$host = $host. ”’. $端口;
$connection = sqlsrv_connect($host,$connectionInfo);
$error_messages = sqlsrv_errors();
>对于Windows身份验证,不包括uid和pwd.
$connectionInfo = array();
$conn = sqlsrv_connect($host,$connectionInfo);
如果你有更多的问题,请告诉我哪一步不起作用,所以我们可以用这一步挖掘更多的细节.