[unixODBC][Driver Manager]Can't open lib '/usr/local/lib/libmsodbcsql.17.dylib' : file not found
开发环境:
可以找得到 /usr/local/lib/libmsodbcsql.17.dylib ,权限也改为777了
$ ls -l /usr/local/lib/libmsodbcsql.17.dylib
lrwxr-xr-x 1 daemon daemon 56 2 20 11:43 /usr/local/lib/libmsodbcsql.17.dylib -> ../Cellar/msodbcsql17/17.7.1.1/lib/libmsodbcsql.17.dylib
在命令行里使用
sqlcmd -S <server> -U <uid> -P <pwd>
或者
isql -v -k "Driver=ODBC Driver 17 for SQL Server;Server=<server>;UID=<uid>;PWD=<pwd>"
都可以连接到mssql,就是在项目中php中
$data = sqlsrv_connect('server_ip', array('Database' => 'DB_name', 'UID' => 'uid' , 'PWD' => 'pwd')); var_dump(sqlsrv_errors());
搞不清楚什么原因?
根据您提供的信息,可以认为问题在于 php 的配置中没有正确设置 MSSQL 驱动所需的环境变量,导致连接 mssql 时出现路径错误。因此,您需要正确地设置环境变量来解决此问题。
以下是可能的解决方案:
确认 msodbcsql17 驱动程序是否已正确安装并链接到正确的路径。您可以在终端中键入 odbcinst -j
来查找正确的路径,然后将其设置到环境变量中。
如果您已经安装了 Microsoft PHP 驱动程序 5.8,您可以尝试在 PHP 的配置文件 php.ini 中添加如下两行,以启用 MSSQL 驱动程序:
extension=php_sqlsrv_56_ts.dll
extension=php_pdo_sqlsrv_56_ts.dll
请注意,这只在安装了相应的 PHP 驱动程序并将其添加到 PHP 的路径中时才有效。
$data = sqlsrv_connect('server_ip', array('Database' => 'DB_name', 'UID' => 'uid' , 'PWD' => 'pwd', 'Driver' => '/usr/local/lib/libmsodbcsql.17.dylib'));
这将手动指定驱动程序的路径,以便让 PHP 找到正确的驱动程序。
希望这些解决方案能够解决您的问题。如果没有,您可能需要进一步查看 PHP 和 MSSQL 的文档,或联系它们的支持人员以寻求帮助。