我真的觉得我已经对这个问题进行了详尽的搜索,发现了类似的问题并且尝试了很多事情都没有成功,所以我第一次在这里发布一个问题:
我做了很多网页/网络编程(主要是 PHP/jQuery)并将这些页面托管在我的数字图书馆部门的 Drupal/Ubuntu 服务器上。我只是对它们进行编码并通过 Dreamweaver 发布它们,因为我对 Drupal 前端没有太多用处。我只需要我的页面的服务器。
无论如何,我想制作一些可以连接到我们的库目录的 PHP 页面,所以我一直在使用 Drupal/Ubuntu 服务器的命令行。我安装了 unixODBC,遇到了一些麻烦,安装了 FreeTDS,设置了驱动程序和 DSN。
最后...
我能够通过 tsql 连接到我们的目录并运行查询。
我制作了一个基本的 PHP 脚本来测试连接:
它从服务器的 Ubuntu 命令行工作(连接成功)。
当我在浏览器中加载它时它不起作用。我得到了可怕的:
警告:odbc_pconnect(): SQL 错误:[unixODBC][Driver Manager]Data source name not found, and no default driver specified, SQL 状态 IM002 in SQLConnect in SQLConnect in /var/www/mydirectory/mytestpage.php on line 15
更新:我在笔记本电脑的一个分区中安装了一个测试 Ubuntu Server,我开始清理,安装了 Apache2/PHP5(带有 mssql 和 odbc 模块等)/FreeTDS 等。我得到了一个 tsql 连接。我制作了基本的 PHP 脚本并从命令行成功运行它。然后我从浏览器导航到 php 页面,它工作了!我仍然需要在 Drupal 服务器版本上实现这一点,但现在我至少已将问题缩小到 Drupal 服务器上的问题。
我搜索并发现了以下可能的原因:
文件权限,我认为我已得到纠正,但不行
那可能是我设置了用户 DNS 而不是系统 DNS,我已尽力使用正确的“odbcinst”命令选项进行更正
那也许 php 需要以 CGI 模式而不是作为模块运行。但从我读到的内容看来,这似乎不太可能。而且我不确定这会如何影响 Drupal。(我应该在这里进行的系统范围的更改是有限制的。)
很多人说是 SElinux 阻止了 Apache 在浏览器中显示页面,但是暂时禁用 SElinux 没有用。
感谢您的帮助!