我已经在PHP上启用了FreeTDS,unixODBC和ODBC。这一切似乎都很好。我可以通过iSQL命令行连接。
由于某种原因,PHP 在通过 HTTP 访问时无法工作。
例如。如果我通过命令行运行 php index.php(其中 index.php 通过 ODBC 连接),它运行良好。
但通过 HTTP 访问时相同的代码返回
警告:odbc_connect():SQL 错误:[unixODBC][驱动程序管理器]找不到数据源名称,并且未指定默认驱动程序,SQL 状态为 SQLConnect 中的 IM002
这可能是一些许可的情况吗
提前致谢
这是连接代码
$connect = odbc_connect("DSNNAME", "USERNAME", "PASSWORD") or die('e');
我已经更改了凭据。但是当我通过 PHP 命令通过终端通过 SSH 运行它时,代码工作正常。但是当我通过HTTP运行它时,它没有。
同样在SSH上,我没有通过root用户运行它。我正在使用 ec2 AWS - 并通过 ec2-user 运行 SSH(这是默认设置)
我觉得"apache"用户无权访问我不知道的东西。
您可以像这样从 PHP 源代码添加 DSN
$dsn = "Driver=FreeTDS;Server=192.168.1.17;Port=1433;Database=mydb;TDS_Version=7.2;";
$Connection = odbc_connect($dsn,$user,$pass);
2021 - 回到未来:
我知道这篇文章很旧,但我的回复可以为一个绝望的灵魂指出正确的方向:
- 您正在使用 odbc,并且命令"isql"工作正常
- 您正在使用 FreeTDS,命令 "tsql" 工作正常
- 问题在于运行通过 FreeTDS 调用 odbc 的 php 脚本 ->不断给出错误
请阅读:https://www.linuxquestions.org/questions/blog/tix-592494/freettds-libiodbc-iodbc-php-7-4-21-on-slackware-current-5-13-5-38621/