使用PHP的odbc_connect(),为什么ODBC驱动程序在apache和CLI之间无法正常工作?

时间:2018-08-29 08:40:14

标签: php sql-server odbc

我有以下PHP:

odbc_connect("Driver={ODBC Driver 13 for SQL Server};Server=$server;Database=$database;", $user, $password);

从网页提供此代码后,它可以正常工作,返回resource(2, odbc link)。但是,将相同的代码放入命令行脚本将无法连接并引发以下警告:

PHP Warning:  odbc_connect(): SQL error: [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 13 for SQL Server' : file not found, SQL state 01000 in SQLConnect in /path/file.php on line 7

检查phpinfo()php -i时,我看到加载的模块,ini配置文件和unixodbc设置是相同的。

对于它的价值,我可以将连接字符串更改为使用DSN=MyMSSQLServer而不是Driver={...}部分,并且会发生同样的情况。它可以在apache中工作,但不能在CLI脚本中工作。

要使这些连接在CLI中保持相同状态,我会缺少什么?


更新

经过大量测试,我发现将以下内容放在脚本的开头:

putenv('ODBCSYSINI');
putenv('ODBCINI');

(或者在从bash运行脚本之前只是unset ODBCSYSINIunset ODBCINI)使其突然起作用。我不知道为什么。显然,以apache运行时,这些变量不存在。他们会以某种方式覆盖默认设置吗?

0 个答案:

没有答案