我在相同的主题问题上遇到了不少帖子,但是我仍然无法解决它,所以我问。我想在我的php脚本中连接到sql。我的连接字符串是:
/* Specify the server and connection string attributes. */
$serverName = "xxx-PC\SQLExpress";
$connectionOptions = array("Database"=>"Salesforce");
$conn = sqlsrv_connect($serverName, $connectionOptions);
if($conn === false)
{
die(print_r(sqlsrv_errors(), true));
}
我已在wamp文件夹下的php.ini
文件中安装并包含以下内容:C:\wamp\bin\php\php5.4.16
:
extension=c:/wamp/bin/php/php5.4.16/ext/php_sqlsrv_53_ts.dll
我的wampserver
运行良好,wampapache
和wampsqld
服务也正常运行。我能够成功执行php.exe。但是,我无法建立与数据库所在的SQL Server 2008 R2
的连接。请帮忙!
编辑1:当我尝试连接到SQL Server 2008 R2
时,wamp服务器正在运行wampmysql服务。这可能是原因吗?我应该使用MySQL
代替SQL
吗?有什么指针吗?
编辑2:当我运行sqlsrv
时,我根本没有看到phpinfo()
部分虽然我已在位于该文件夹的bin文件夹中的extension=php_sqlsrv_54_ts.dll
文件中添加了php.ini
wamp服务器。
答案 0 :(得分:10)
安装第三方扩展时,需要确保所有编译参数都匹配:
常见故障包括:
php.ini
文件(这是典型的捆绑包);正确的路径显示在phpinfo()
。无法看到启动错误;那些应该出现在Apache日志中,但您也可以使用命令行来诊断它,例如:
php -d display_startup_errors=1 -d error_reporting=-1 -d display_errors -c "C:\Path\To\php.ini" -m
如果一切正常,您应该在命令输出中看到sqlsrv
和/或phpinfo()
(取决于您正在配置的SAPI):
[PHP模块]
bcmath时
日历
核心
[...]
SPL
的 SQLSRV 强>
标准
[...]
答案 1 :(得分:10)
This帮助我找到答案。在我的例子中,有两个php.ini
文件位于wamp中。一个在php文件夹下,另一个在C:\wamp\bin\apache\Apachex.x.x\bin
文件夹中。通过sqlsrv_connect
函数连接到SQL时,我们指的是php.ini
文件夹中的apache
文件。将以下内容(根据您的版本)添加到此文件中:
extension=c:/wamp/bin/php/php5.4.16/ext/php_sqlsrv_53_ts.dll
答案 2 :(得分:3)
如果您使用的是 Microsoft Drivers 3.1,3.0和2.0 。
请检查已安装IIS的PHP版本
使用此脚本检查php版本:
<?php echo phpinfo(); ?>
OR
如果您使用网络平台安装程序安装了PHP Manager in IIS,则可以从中检查版本。
然后:
如果您使用的是新的PHP版本(5.6),请下载Drivers from here
对于低于5.6的PHP版本 - 请下载Drivers from here
然后使用PHP管理器将下载的驱动程序添加到php config
文件中。您可以按如下所示进行操作(浏览文件并按OK)。
然后重新启动IIS服务器
如果此方法不起作用,请更改 php版本并尝试运行您的php脚本。
要将php version
更改为降低并尝试了解发生了什么。然后您可以下载相关驱动程序,以便执行上述步骤。
答案 3 :(得分:0)
首先检查phpinfo();
中是否正确加载了扩展程序(应显示sqlsrv
之类的内容)。如果没有,则扩展未正确加载。您还需要在安装扩展程序后重新启动apache。
答案 4 :(得分:0)
我有同样的想法,因为在apache PHPIniDir D:/wamp/bin/php/php5.5.12
的httpd.conf中这是不正确的
答案 5 :(得分:0)
在 pdo_sqlsrv 中搜索 sqlsrv 扩展。