Я настраиваю новый сервер, используя ...
- 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.Это был невероятно ценный ресурс.Просто хотел поделиться этим вместе с просьбой о помощи.
Заранее спасибо,
Рон