Используя PHP odbc_connect (), почему драйверы ODBC не работают одинаково между apache и CLI? - PullRequest
0 голосов
/ 29 августа 2018

У меня есть следующий PHP:

odbc_connect("Driver={ODBC Driver 13 for SQL Server};Server=$server;Database=$database;", $user, $password);

Когда этот код подается с веб-страницы, он работает нормально, возвращая resource(2, odbc link). Однако при вставке того же кода в сценарий командной строки не удается подключиться и выдается следующее предупреждение:

PHP Warning:  odbc_connect(): SQL error: [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 13 for SQL Server' : file not found, SQL state 01000 in SQLConnect in /path/file.php on line 7

Проверка phpinfo() и php -i Я вижу, что загруженные модули, файлы конфигурации ini и настройки unixodbc идентичны.

Для чего бы то ни было, я могу изменить строку подключения, чтобы использовать DSN=MyMSSQLServer вместо Driver={...}, и то же самое происходит; он работает в apache, но не в скрипте CLI.

Что мне не хватает, чтобы эти соединения работали одинаково в CLI?


Обновление

После долгих испытаний я обнаружил, что в начале моего сценария помещается следующее:

putenv('ODBCSYSINI');
putenv('ODBCINI');

(или просто unset ODBCSYSINI и unset ODBCINI перед запуском скрипта из bash) заставляет его работать внезапно. Я не уверен почему. Очевидно, что эти переменные не существуют при запуске как Apache. Они как-то отменяют настройки по умолчанию где-то?

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