Как подключить AS400 к Laravel - PullRequest
1 голос
/ 27 мая 2020

Некоторое время я искал, как попробовать подключение к AS400 с помощью Laravel 7.

Я использую этот пакет: https://github.com/cooperl22/laravel-ibmi

Я добавляю laravel -ibmi в ваш composer. json файл:

"require": {
    "cooperl/laravel-ibmi": "^7.0"
}

Используйте composer для установки этого пакета.

$ composer update

Запустить командная строка из root моего проекта:

$ php artisan vendor:publish

И установить учетные данные в .env

DB_CONNECTION=ibmi
DB_HOST=********
DB_PORT=********
DB_DATABASE=********
DB_USERNAME=********
DB_PASSWORD=********

Я пытаюсь подключиться к tinket, но у меня есть это сообщение:

Psy Shell v0.10.4 (PHP 7.2.24-0ubuntu0.18.04.4 — cli) by Justin Hileman
>>> DB::connection();
PDOException with message 'could not find driver

Я должен установить свои учетные данные в app / config / db2. php, а не в .env?

ОБНОВЛЕНИЕ

Я устанавливаю unixODB C

odbcinst -j
unixODBC 2.3.4
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/za/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

Загрузить ibm_data_server_driver_for_odbc_cli_linux390x64_v11.5.tar.gz

tar -xavf ibm_data_server_driver_for_odbc_cli_linux390x64_v11.5.tar.gz
cd odbc_cli
sudo mkdir -p /opt/ibm/clidriver
sudo cp -r clidriver/* /opt/ibm/clidriver

Отредактировать odbcinst.ini

[Db2]
Description=Db2 Driver
Driver=/opt/ibm/clidriver/lib/libdb2o.so
fileusage=1
dontdlclose=1

Отредактировать odb c .ini для теста

[sample]
Description     = Test to DB2
Driver          = Db2

но когда я попробовал, я получил это сообщение

export DB2INSTANCE=db2inst1
isql -v sample db2inst1 ibmdb2
[01000][unixODBC][Driver Manager]Can't open lib '/opt/ibm/clidriver/lib/libdb2o.so' : file not found
[ISQL]ERROR: Could not SQLConnect

ОБНОВЛЕНИЕ 2

I go до https://www.ibm.com/support/pages/node/633843

Щелкните Загрузки для клиентских решений IBM i Access

При появлении запроса l og с моим IBMid

Прокрутите вниз и рядом с ACS Linux App Pkg выберите Загрузить сейчас

После этого я установил ibm-iaccess-1.1.0.13-1.0.x86_64. rpm, я вижу, что он автоматически добавляет драйвер IBM i Access ODB C в odbcinst.ini.

Отредактируйте odb c .ini для теста

[sample]
Description     = Test to DB2
Driver          = IBM i Access ODBC Driver

Но это ошибка повторяется (тогда как /opt/ibm/iaccess/lib64/libcwbodbc.существует).

isql -v sample
[01000][unixODBC][Driver Manager]Can't open lib '/opt/ibm/iaccess/lib64/libcwbodbc.so' : file not found
[ISQL]ERROR: Could not SQLConnect

ОБНОВЛЕНИЕ 3

Я ввожу эту команду

ldd /opt/ibm/iaccess/lib64/libcwbodbc.so
    linux-vdso.so.1 (0x00007ffe4830e000)
    libodbcinst.so.2 => /usr/lib/x86_64-linux-gnu/libodbcinst.so.2 (0x00007f1fdc97e000)
    libcwbcore.so => not found
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f1fdc5f5000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1fdc257000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f1fdc03f000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1fdbc4e000)
    libltdl.so.7 => /usr/lib/x86_64-linux-gnu/libltdl.so.7 (0x00007f1fdba44000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f1fdb825000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f1fdce6c000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1fdb621000)

Я сделал это потом.

cp /opt/ibm/iaccess/lib64/libcwbcore.so /usr/lib/x86_64-linux-gnu/
isql -v sample
[S1000][unixODBC][IBM][Pilote ODBC System i Access]Le nom de syst�me requis pour la connexion est manquant.
[ISQL]ERROR: Could not SQLConnect

1 Ответ

1 голос
/ 04 июня 2020

Для PHP и Laravel разумно заставить unixODB C работать в командной строке, прежде чем пытаться заставить его работать с PHP. Причина в том, что устранение неполадок упрощается, когда у вас меньше компонентов для тестирования. Это также помогает с разделением ответственности.

Решением было загрузить и установить подходящий драйвер Db2 для ODBC / CLI на Linux специально для работы с i-series (AS / 400) с веб-сайта IBM по адресу эта ссылка .

Другой небольшой драйвер clidriver (поставляемый IBM) не может взаимодействовать с i-серией, если вы go не используете шлюз Db2-connect или не имеете лицензии Db2-connect ( отдельная покупка). Поэтому обычно более эффективно использовать продукт доступа IBM i. Clidriver работает правильно без лицензии или подключения к Db2, только если целевой сервер Db2 работает на Linux или Unix варианте или Microsoft Windows.

Этот IBM i access client продукт имеет PDF прилагается документ «Руководство по установке и использованию» , в котором есть полезная информация и несколько ссылок на полезные ресурсы.

После установки необходимо правильно настроить odbcjinst.ini (в котором подробно описывается драйвер) и odbc.ini (в котором подробно описаны исходные данные) (или .odbc.ini для пользовательских DSN) для использования с драйвером, поставляемым клиентским продуктом доступа IBM i.

Инструкции по заполнению odbcinst.ini и odbc.ini доступны на веб-сайте unixODB C.

Проверьте подключение к серии i с помощью isql инструмент, чтобы проверить, что unixODB C может подключаться и использовать SQL запросы.

Продукт доступа IBM i также имеет инструменты устранения неполадок, которые включают, среди прочего, команды cwbping и cwbtrc, которые использовать драйвер Db2 независимо от unixODB C.

После успешного подключения isql к базе данных серии i вы готовы настроить PHP для использования драйвера в обычном режиме. Затем вы можете протестировать с помощью Laravel.

Не забудьте убедиться, что ваша linux оболочка устанавливает правильную переменную среды LANG в соответствии с вашей страной и кодировкой символов перед доступом к базе данных (для чего требуется соответствующий locale для установки), в противном случае преобразование кодовой страницы может привести к неожиданным результатам.

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