Verification: a143cc29221c9be0

Php call to undefined function split

Php call to undefined function split

ODBC connector

Для начала мы должны установить ODBC connector. Нам понадобиться скачать на наш сервер архив, поэтому сначала инсталлируем wget.

а) на CentOS / Red Hat:

yum install wget

б) на Ubuntu / Debian:

apt-get install wget

После установки wget перейдем в каталог /tmp:

cd /tmp

Открываем браузер и заходим на страницу загрузки коннекторов MariaDB и выбираем ODBC connector, а также нашу операционную систему, например:

* в данном случае мы загрузим коннектор для CentOS 8.

Ниже на этой же страницы мы увидим ссылку на скачивание нужного нам коннектора. Копируем данную ссылку:

С помощью wget и скопированной ссылки загружаем на сервер коннектор:

wget https://dlm.mariadb.com/1269825/Connectors/odbc/connector-odbc-3.1.10/mariadb-connector-odbc-3.1.10-centos8-amd64.tar.gz

Распаковываем его:

tar zxvf mariadb-connector-odbc-*.tar.gz

И копируем библиотеки в каталог /usr/lib64:

cp mariadb-connector-odbc-*-amd64/lib64/mariadb/lib* /usr/lib64/

После скачанный архив и распакованный каталог можно удалить:

rm -rf mariadb-connector-odbc-*

Установка и подготовка к работе СУБД

Для проверки настройки нам нужен сервер баз данных. Если его нет, то установим mariadb-server на тот же сервер, где и развернули ODBC.

а) для CentOS / Red Hat:

yum install mariadb-server

б) для Ubuntu / Debian:

apt-get install mariadb-server

После установки запускаем сервис и настраиваем его на автозапуск:

systemctl enable mariadb --now

Задаем пароль для суперпользователя:

mysqladmin -u root password

Заходим в консоль SQL:

mysql -uroot -p

Создаем новую базу данных:

> CREATE DATABASE my_db DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

* для наших тестов мы создали базу с названием my_db.

Дадим права на подключение и работу с созданной базой данных:

> GRANT ALL PRIVILEGES ON my_db.* TO 'odbc_user'@'localhost' IDENTIFIED BY 'odbc_password';

* данной командой мы разрешили доступ к базе my_db пользователю odbc_user, который будет подключаться с локального компьютера и паролем odbc_password.

Подключаемся к созданной базе данных:

> use my_db;

Создаем простенькую таблицу:

> CREATE TABLE IF NOT EXISTS `users` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `name` varchar(512) NOT NULL,
  `rights` varchar(64) NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

* наша созданная таблица будет состоять из 3 столбцов — idname и rights.

Добавим 3 строки в нашу таблицу:

> INSERT INTO users (`name`, `rights`) VALUES ('Дмитрий', 'admin'), ('Оля', 'superuser'), ('Антон' ,'operator');

Готово. Теперь выходим из sql-оболочки:

> quit

Установка и настройка ODBC

Устанавливаем сам ODBC.

а) для CentOS / Red Hat:

yum install unixODBC

б) для Ubuntu / Debian:

apt-get install unixodbc odbcinst

Открываем конфигурационный файл:

vi /etc/odbcinst.ini

Проверяем наличие следующей записи (если ее нет, добавляем):

...
[MariaDB]
Description     = ODBC for MariaDB
Driver          = /usr/lib/libmaodbc.so
Driver64        = /usr/lib64/libmaodbc.so
FileUsage       = 1
...

* в данном примере описано подключение к СУБД с драйвером MariaDB и путем до файла с библиотекой (отдельно для 32- и 64-разрядной версии).

Открываем файл:

vi /etc/odbc.ini

Добавляем DSN для подключения к нашему серверу и базе, которую создавали на предыдущем этапе:

[ODBC]
Driver = MariaDB
USER = odbc_user
PASSWORD = odbc_password
Server = 127.0.0.1
Database = my_db
Port = 3306

* где:

  • ODBC — произвольное название для нашего подключения.
  • Driver — драйвер, который мы будем использовать. Его мы описали в файле /etc/odbcinst.ini.
  • USER — пользователь, под которым будем подключаться к базе. Используем данные для ранее созданной учетной записи в mariadb.
  • PASSWORD — пароль для созданного ранее пользователя, под которым мы будем подключаться к базе.
  • Server — сервер баз данных. В нашем примере локальный сервер.
  • Database — имя созданной базы данных.
  • Port — порт, на котором слушает сервер. 3306 используется по умолчанию для MariaDB.

Пробуем подключиться к базе с использованием ODBC:

isql -v ODBC

* где ODBC — название для подключения, которое мы задали на предыдущем шаге.

Мы должны увидеть командную строку для ввода команд sql — пробуем получить данные из нашей таблицы users:

> select * from users;

Мы должны увидеть что-то на подобие:

+----+--------------+----------------+
| id |     name     |     rights     |
+----+--------------+----------------+
| 1  |   Дмитрий    |      admin     |
| 2  |     Оля      |    superuser   |
| 3  |    Антон     |    operator    |
+----+--------------+----------------+

Можно выходить из sql-оболочки:

> quit

Настройка php

Теперь настроим подключение из php. Мы рассмотрим 2 способа подключения — с помощью odbc_connect и PDO. 

Предварительно, создадим каталог, в который разместим тестовый скрипт для подключения к базе:

mkdir -p /var/www/php

odbc_connect

Ставим расширение php-odbc (а также сам php, если его нет на сервере).

а) для CentOS / Red Hat:

yum install php php-odbc

б) для Ubuntu / Debian:

apt-get install php php-odbc

После установки создадим скрипт для проверки подключения:

vi /var/www/php/db.php

    $driver = "DRIVER=MariaDB";
    $server = "127.0.0.1";
    $db_name = "my_db";
    $port = "3306";
    $user = "odbc_user";
    $password = "odbc_password";
    $ocon = odbc_connect("{$driver};Server={$server};Database={$db_name};Port={$port};String Types=Unicode", $user, $password);

    $result = odbc_exec($ocon, "SELECT * FROM users LIMIT 10");
    while ($mass = odbc_fetch_array ($result)) {
        print_r($mass);
    }

    odbc_close($ocon);

?>

* в данном листинге мы задаем параметры для подключения к локальному серверу (127.0.0.1) с учетными данными, которые создали при настройке СУБД. После мы выполняем выборку и выводим результат на экран.

Или же мы можем сократить наш скрипт. Ранее для проверки мы создали ODBC DSN в файле /etc/odbc.ini. PHP с помощью odbc_connect может ссылаться для соединения на него. Итого, получаем:

    $ocon = odbc_connect("ODBC", "odbc_user", "odbc_password");

    $result = odbc_exec($ocon, "SELECT * FROM users LIMIT 10");
    while ($mass = odbc_fetch_array ($result)) {
        print_r($mass);
    }

    odbc_close($ocon);

?>

* обратите внимание, что мы передаем функции odbc_connect только 3 параметра для подключения:

  1. ODBC — название для нашего DSN.
  2. odbc_user — имя пользователя для подключения к базе данных.
  3. odbc_password — пароль для подключения к базе.

PDO

Ставим расширение php-pdo (а также сам php, если его нет на сервере).

а) для CentOS / Red Hat:

yum install php php-pdo

б) для Ubuntu / Debian:

apt-get install php php-pdo

После установки создадим скрипт для проверки подключения:

vi /var/www/php/db.php

    $pcon = new PDO("odbc:Driver=MariaDB;Server=127.0.0.1;Database=my_db;","odbc_user","odbc_password");
 
    try {
        $result = $pcon->query("SELECT * FROM users LIMIT 10");
        $mass = $result->fetchAll(PDO::FETCH_ASSOC);
        print_r($mass);
    } catch (Exception $e){
        throw new PDOException(var_export($pcon->errorInfo(),true));
    }

?>

* в данном листинге мы задаем параметры для подключения к локальному серверу (127.0.0.1) с учетными данными, которые создали при настройке СУБД. После мы выполняем выборку и выводим результат на экран.

Или же мы можем сократить наш скрипт. Ранее для проверки мы создали ODBC DSN в файле /etc/odbc.ini. PHP с помощью PDO может ссылаться для соединения на него. Итого, получаем:

    $pcon = new PDO("odbc:ODBC","odbc_user","odbc_password");

    try {
        $result = $pcon->query("SELECT * FROM users LIMIT 10");
        $mass = $result->fetchAll(PDO::FETCH_ASSOC);
        print_r($mass);
    } catch (Exception $e){
        throw new PDOException(var_export($pcon->errorInfo(),true));
    }

?>

* обратите внимание, что мы передаем функции PDO только 3 параметра для подключения:

  1. odbc:ODBC — способ соединения с базой и название для нашего DSN.
  2. odbc_user — имя пользователя для подключения к базе данных.
  3. odbc_password — пароль для подключения к базе.

Проверка запроса

После того, как мы создали скрипт проверки любым из вышеописанных способов, запускаем его на исполнение:

php /var/www/php/db.php

Мы должны получить следующий результат:

Array
(
    [id] => 1
    [name] => Дмитрий
    [rights] => admin
)
Array
(
    [id] => 2
    [name] => Оля
    [rights] => superuser
)
Array
(
    [id] => 3
    [name] => Антон
    [rights] => operator
)

Подключение к MariaDB с помощью ODBC настроено.

Возможные ошибки

Call to undefined function odbc_connect()

Возникает при попытке запустить скрипт, который подключается к базе с помощью функции odbc_connect.

Причина: для нашей версии php не установлено расширение php-odbc.

Решение: команда для установки зависит от используемого типа дистрибутива Linux.

а) для CentOS / Red Hat:

yum install php-odbc

б) для Ubuntu / Debian:

apt-get install php-odbc

Проверить, что нужное расширение установлено можно командой:

php -i | grep odbc