SQLSTATE = HY000, SQLDriverConnect: -23101 [Informix] [Informix ODBC Driver] [Informix] Неуказанная системная ошибка = -23101
ОС: Ubuntu 16.04 64Bits
Скомпилируйте PDO_INFORMIX (версия 1.3.3)
Включить расширение pdo_informix.so в конфигурации apache
Установить переменные окружения Apache
1 — INFORMIXDIR = / opt / informix (где я установил CSDK)
2 — DB_LOCALE = en_US.819
3 — CLIENT_LOCALE = en_US.utf8
Строка подключения: $instance = new PDO("informix:host=$host;service=$port;database=$db;server=ol_standard;protocol=onsoctcp;client_locale=en_US.utf8;db_locale=en_US.819;EnableScrollableCursors=1;OPTIMIZEAUTOCOMMIT=1", $usr, $pwd);
Ошибка 23101 касается DB_LOCALE и CLIENT_LOCALE, но она все установлена.
Глядя на текст в сообщении об ошибке, я думаю, что у вас больше, чем просто проблема локали (23101).
Если вы получаете:Неуказанная системная ошибка«
скорее что:Невозможно загрузить категории локали»
это означает, что драйвер не смог найти правильное текстовое сообщение для ошибки -23101, что обычно происходит, когда INFORMIXDIR установлен неправильно.
Файлы .iem (в $ INFORMIXDIR / msg / en_us / 0333) содержат текстовое сообщение для каждого номера ошибки. Если сообщение не может быть найдено, вы получаете общую «Неуказанную системную ошибку».
Вы упомянули Apache, поэтому я думаю, что вы пытаетесь запустить код PHP из apache, а не только из командной строки. Apache, возможно, не передает переменную env модулю PHP.
Если модуль apache env (mod_env.so) включен, вы можете попробовать поместить что-то подобное в ваш файл httpd.conf.
setenv INFORMIXDIR '/opt/informix'
поэтому переменная INFORMIDIR будет передана в модуль PDO.
Других решений пока нет …