3

我真的觉得我已经对这个问题进行了详尽的搜索,发现了类似的问题并且尝试了很多事情都没有成功,所以我第一次在这里发布一个问题:

我做了很多网页/网络编程(主要是 PHP/jQuery)并将这些页面托管在我的数字图书馆部门的 Drupal/Ubuntu 服务器上。我只是对它们进行编码并通过 Dreamweaver 发布它们,因为我对 Drupal 前端没有太多用处。我只需要我的页面的服务器。

无论如何,我想制作一些可以连接到我们的库目录的 PHP 页面,所以我一直在使用 Drupal/Ubuntu 服务器的命令行。我安装了 unixODBC,遇到了一些麻烦,安装了 FreeTDS,设置了驱动程序和 DSN。

最后...

  1. 我能够通过 tsql 连接到我们的目录并运行查询。

  2. 我制作了一个基本的 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 服务器上的问题。

我搜索并发现了以下可能的原因:

  1. 文件权限,我认为我已得到纠正,但不行

  2. 那可能是我设置了用户 DNS 而不是系统 DNS,我已尽力使用正确的“odbcinst”命令选项进行更正

  3. 那也许 php 需要以 CGI 模式而不是作为模块运行。但从我读到的内容看来,这似乎不太可能。而且我不确定这会如何影响 Drupal。(我应该在这里进行的系统范围的更改是有限制的。)

  4. 很多人说是 SElinux 阻止了 Apache 在浏览器中显示页面,但是暂时禁用 SElinux 没有用。

感谢您的帮助!

4

4 回答 4

0

如果您要在命令行上测试 odbc 源,我建议您使用 isql 实用程序而不是 tsql。isql 使用您在 odbc.ini 中定义的 DSN 连接到数据库,而 tsql 直接连接到您的数据库。

如果它适用于 isql,它也应该适用于您的网页。

还要检查 Drupal/Ubuntu 服务器文件 /etc/odbc.ini(您的 DSN 源)和 /etc/odbcinst.ini(TDS 驱动程序设置),看看它们是否与正在运行的 Ubuntu 安装上的匹配。

于 2014-06-21T15:35:36.503 回答
0

我的猜测是它与php有关。ini 文件。在我的 Ubuntu 系统上,我有 2 个。一个在 /etc/php5/apache2/php.ini 一个在 /etc/php5/cgi/php.ini 需要调整 apache2 路径中的值以允许连接. 不幸的是,除此之外,我用的不是太多,因为我使用 MySQL 和 Mongo

于 2012-09-18T14:52:26.133 回答
0

检查您是否已在以下位置启用 mssql.so 等

/etc/php5/apache2/php.ini,你将在 /etc/php5/cli/php.ini 有另一个

在 ubuntu 中,php.ini 将单独维护 cli & mod_php apache 配置

于 2012-09-18T15:24:39.407 回答
0

将您php.ini从工作服务器复制到非工作服务器,在启动 Web 服务器之前添加使所需的环境变量可访问,并确保您的 Web 服务器对您的odbcodbcinst ini-files. 因此,使用 mssql 知识库或帮助。

于 2015-12-28T08:27:17.887 回答