Соединение PHP / ODBC не работает без учетных данных - PullRequest
0 голосов
/ 29 ноября 2018

Я настраиваю новый сервер, используя ...

  • 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 ().Это потому, что я включил их в определение DSN в /etc/odbc.ini...

[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 пытаются подключиться к источнику данных ODBC с использованием учетных данных Apache.Я получаю следующее сообщение об ошибке:

Ошибка подключения: [unixODBC] [ma-3.0.7] Доступ запрещен для пользователя 'www-data' @ 'localhost' (с использованием пароля: НЕТ)

Конечно, соединение работает, если я предоставляю действительные учетные данные.Я работал над похожими приложениями и считаю полезным хранить все учетные данные в odbc.ini и сохранять этот файл должным образом защищенным.Как я уже сказал, этот метод работал в предыдущих установках LAMP.

Я знаю, что это похоже на уже опубликованные вопросы.Я пролил через них в течение нескольких дней.Я понимаю, почему был передан идентификатор пользователя «www-data», но я не нашел способа установить это соединение без предоставления учетных данных в коде .

Кстати,«публицист» DSN был проверен с использованием iSQL.Кроме того, если я предоставлю учетные данные, ответ, полученный на этой странице, показывает, что я действительно могу подключиться к базе данных и собрать запрошенные записи ...

Тестирование ODBC Эта страница подключается к ODBC DSN.

В случае успеха будет отображено сообщение о количестве найденных записей.В противном случае будет отображено сообщение об ошибке.

3237 записей было получено.

Кроме того, я попытался изменить параметры в вызове odbc_connection ().Пустые строковые параметры работали в прошлом.Изменение пустых строк на NULL не имеет никакого эффекта.Удаление кавычек приводит к синтаксической ошибке.Удаление пустых параметров приводит к ошибке PHP, потому что требуется 3 параметра.

Я думаю, что я ищу настройки конфигурации Apache или PHP, которые позволят установить соединение без указанияполномочия.Но любое понимание было бы очень кстати.

И последнее: это мой первый пост.Я кодировал и отлаживал в течение многих лет.Все больше и больше ответов, которые я ищу, можно найти в StackOverflow.Это был невероятно ценный ресурс.Просто хотел поделиться этим вместе с просьбой о помощи.

Заранее спасибо,

Рон

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...