php odbc_connect到mssql工程在linux / ubuntu命令行不是浏览器

我真的觉得我已经在这个问题上进行了详尽的search,发现了类似的问题,并尝试了一些没有成功的事情,所以我第一次在这里发表一个问题:

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

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

最后…

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

  2. 我做了一个基本的PHP脚本来testing连接:

    • 它从服务器的Ubuntu命令行工作(连接成功)。

    • 当我在浏览器中加载它不起作用。 我得到了可怕的:

警告:odbc_pconnect():SQL错误:[unixODBC] [驱动程序pipe理器]找不到数据源名称,并且没有指定默认驱动程序,SQL状态IM002在/var/www/mydirectory/mytestpage.php中的SQLConnect 15行

更新:我安装了testingUbuntu服务器在我的笔记本电脑上的分区,我开始干净,安装了Apache2 / PHP5(与mssql和odbc模块等)/ FreeTDS等我有一个tsql连接。 我做了基本的PHP脚本,并从命令行成功运行它。 然后我从浏览器导航到php页面, 它工作! 我仍然需要在Drupal服务器版本上做到这一点,但现在我至less已经把问题的范围缩小到了Drupal服务器上。

我search并find了这样的可能原因:

  1. 文件权限,我认为我得到纠正,但没有去

  2. 也许我已经build立了一个用户DNS,而不是一个系统DNS,我试图用正确的“odbcinst”命令选项来纠正

  3. 也许PHP需要运行在CGI模式而不是模块。 但是从我读的这个看起来不太可能。 而且我不确定这将如何影响Drupal。 (我应该在这里对系统进行全面的修改。

  4. 许多人说,这是SElinux阻止Apache在浏览器中显示页面,但暂时禁用SElinux不起作用。

感谢您的帮助!

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

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

/etc/php5/apache2/php.ini,你将在/etc/php5/cli/php.ini

在ubuntu中,php.ini将分别维护cli和mod_php apache配置

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

如果它适用于isql,它也应该在你的网页上工作。

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

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