php odbc_连接到mssql在linux/ubuntu命令行而不是浏览器中工作

php odbc_连接到mssql在linux/ubuntu命令行而不是浏览器中工作,php,sql-server,linux,odbc,freetds,Php,Sql Server,Linux,Odbc,Freetds,我真的觉得我已经对这件事做了详尽的搜索,发现了类似的问题,并且尝试了许多事情都没有成功,所以我第一次在这里发布了一个问题: 我做了很多网页/网页编程(主要是PHP/jQuery),并将这些网页托管在我的数字图书馆部门的Drupal/Ubuntu服务器上。我只是编写代码并通过Dreamweaver发布,因为Drupal前端没有太多用处。我只需要我的网页服务器 无论如何,我想制作一些可以连接到我们的库目录的PHP页面,所以我一直在使用Drupal/Ubuntu服务器的命令行。我安装了unixODBC

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

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

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

最后

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

  • 我编写了一个基本的PHP脚本来测试连接:

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

    • 当我在浏览器中加载它时,它不工作。我感到恐惧:

  • 警告:odbc_pconnect():SQL错误:[unixODBC][Driver Manager]未找到数据源名称,并且未指定默认驱动程序,SQL状态IM002位于/var/www/mydirectory/mytestpage.php的第15行的SQLConnect中

    更新:我在笔记本电脑的一个分区中安装了一个测试Ubuntu服务器,在那里我开始清理,安装了Apache2/PHP5(带有mssql和odbc模块等)/FreeTDS等。我获得了tsql连接。我编写了基本的PHP脚本,并从命令行成功运行了它。然后,我从浏览器导航到php页面,它成功了!我仍然需要在Drupal服务器版本上实现这一点,但现在我至少已经将问题缩小到Drupal服务器上

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

  • 文件权限,我想我已经更正了,但是没有权限

  • 可能是我设置了一个用户DNS,而不是一个系统DNS,我用正确的“odbcinst”命令选项尽力去纠正它

  • 也许php需要在CGI模式下运行,而不是作为模块运行。但从我读到的来看,这似乎不太可能。我不确定这会对Drupal产生什么影响。(我应该在这里对系统范围内的更改进行限制。)

  • 许多人说是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服务器对您的
    odbc
    odbcinst ini文件具有完全访问权限。所以,使用mssql知识库或帮助。

    哦,天哪,我真的希望就是这样。但这两个地方都启用了mssql.so。无论如何,非常感谢,因为你刚刚教了我一些我不知道的东西!再次感谢!INI文件的实际mssql部分中mssql的所有设置是否相同?我相信对于不同的连接器有一个不同的设置块。实际上我只是想比较两个INI文件,看看有什么不同。我想你一定了解到了这两个文件之间的差异,因为这在发生的情况下非常有意义。谢谢嗯,你是第二个提到这些单独的php.ini文件的人。我确保两者都启用了mssql扩展,但也许我应该对apache2和cli php.ini文件进行全面比较,看看是否有不同之处。。。非常感谢!