带有 FreeTDS 的 ODBC PHP 无法通过 HTTP 工作

ODBC with FreeTDS PHP Not working via HTTP

我在 PHP 上启用了 FreeTDS、unixODBC 和 ODBC。这一切似乎都很好。我可以通过 iSQL 命令行连接。

由于某些原因,PHP 在通过 HTTP 访问时无法工作。

例如。 通过命令行,如果我 运行 php index.php (其中 index.php 通过 ODBC 连接)它运行良好。

但通过 HTTP 访问时代码相同,returns

Warning: odbc_connect(): SQL error: [unixODBC][Driver Manager]Data source name not found, and no default driver specified, SQL state IM002 in SQLConnect

这可能是某种许可的情况

提前致谢

这是连接码

$connect = odbc_connect("DSNNAME", "USERNAME", "PASSWORD") or die('e'); 

我已经更改了凭据。但是当我通过终端通过 SSH 通过 PHP 命令 运行 它时,代码工作正常。但是当我 运行 它通过 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 - 回到未来:

我知道这个 post 已经过时了,但我的回复可以为绝望的灵魂指明正确的方向:

  1. 您正在使用 odbc,命令“isql”工作正常
  2. 您正在使用 FreeTDS,命令“tsql”工作正常
  3. 问题是 运行 通过 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/