没有凭据,PHP / ODBC连接将无法工作

时间:2018-11-29 17:43:33

标签: php apache odbc mariadb

我正在使用...设置新服务器

  • Debian9
  • Apache / 2.4.25(Debian)
  • PHP版本7.0.30-0 + deb9u1
  • MariaDB(mysql Ver 15.1 Distrib 10.1.37-MariaDB)
  • unixODBC 2.3.4

我正在尝试使此代码段能够在以前的版本上运行...

<?php 
$connection = odbc_connect('pubassist', '', '');
if (!$connection) { exit("Connection Failed:" . odbc_errormsg() ); }
$sql = "select count(contact_no) as cCount from contact";
$result = odbc_exec($connection, $sql);
while(odbc_fetch_row($result)){
#   echo number_format(odbc_num_rows($result)) . " records were retrieved.";
    $contactCount = odbc_result($result, "cCount");
    echo number_format($contactCount) . " records were retrieved.";
}


odbc_close($conection);
?>

您会注意到,调用odbc_connect()时缺少凭据。这是因为我已经将它们包含在/etc/odbc.ini的DSN定义中...

[pubassist]
Driver=MariaDB ODBC 3.0 Driver
DATABASE=pubassist
DESCRIPTION=PubAssist via ODBC
SERVER=127.0.0.1
USER=<myuser>
PASSWORD=<myuserpassword>
socket=/var/run/mysqld/mysqld.sock
#PORT=3306

显然,Apache和PHP尝试使用Apache的凭据连接到ODBC数据源。我收到以下错误消息:

  

连接失败:[unixODBC] [ma-3.0.7]拒绝用户访问   'www-data'@'localhost'(使用密码:否)

当然,如果我提供有效的凭据,则连接有效。我曾在类似的应用程序上工作,发现将所有凭据保存在odbc.ini中并适当保护该文件是有益的。就像我说的那样,该技术已在以前的LAMP安装中起作用。

我知道这类似于已经发布的问题。我已经连续几天浏览这些内容。我了解为什么提交了用户ID“ www-data”,但是我没有找到一种方法来建立此连接,而无需在代码中提供凭据

顺便说一句,“ pubassist” DSN已使用iSQL进行了验证。另外,如果我提供了凭据,则从此页面获得的响应表明我确实可以连接到数据库并收集请求的记录...

  

测试ODBC此页面连接到ODBC DSN。

     

如果成功,将显示一条有关所检索记录数的消息。   提出了。如果没有,将显示错误消息。

     

检索到3,237条记录。

此外,我尝试更改对odbc_connection()的调用中的参数。空字符串参数在过去一直有效。将空字符串更改为NULL无效。删除引号会产生语法错误。取消使用空参数会导致PHP错误,因为需要3个参数。

我想我正在寻找一个Apache或PHP配置设置,该设置将允许在不指定凭据的情况下进行连接。但是,任何见识都会受到欢迎。

最后一件事:这是我的第一篇文章。我已经进行了多年的编码和调试。我寻求的答案越来越多地在StackOverflow上找到。这是非常宝贵的资源。只是想和寻求帮助分享一下。

预先感谢

罗恩

0 个答案:

没有答案