Odbc_connect() на CentOS 6

В настоящее время у меня возникают проблемы с получением odbc_connect для работы на моем сервере CentOS. Я установил драйвер Easysoft ODBC-SQL-Server с целью подключения к Microsoft SQL Server 2012.

Я получаю сообщение об ошибке:

PHP Неустранимая ошибка: вызов функции undefined odbc_connect()

При использовании odbc_connect().

> ls /etc/php.d
> curl.ini      json.ini  pdo.ini       pdo_sqlite.ini  sqlite3.ini
> fileinfo.ini  odbc.ini  pdo_odbc.ini  phar.ini        zip.ini
> cat pdo_odbc.ini ; 
> Enable pdo_odbc
> extension module extension=pdo_odbc.so

Я установил пакет php-odbc и перезапустил мой сервер, есть ли что-то еще, что мне нужно сделать, чтобы убедиться, что PHP имеет доступ к методам odbc?

ОБНОВЛЕНИЯ

php --ini

указывает на

/usr/local/lib/php.ini

Что не упоминает ODBC.

Запуск команды

php -i |grep ini

дает:

Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => /usr/local/lib/php.ini
Scan this dir for additional .ini files => (none)
Additional .ini files parsed => (none)
user_ini.cache_ttl => 300 => 300
user_ini.filename => .user.ini => .user.ini
init_command_executed_count => 0
init_command_failed_count => 0
com_init_db => 0
Classes => AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException
open sourced by => Epinions.com

Команда

nm /usr/local/bin/php |grep odbc

не выводит результат.

Ответ 1

Убедитесь, что вы работаете с правильной конфигурацией php.

запустите следующую команду, чтобы узнать правильный файл odbc ini

php --ini

Ответ 2

Дважды проверьте, есть ли ini файл в /etc/php.d. Он должен выглядеть примерно как 20-odbc.ini и должен указывать на .so файл

Ответ 3

Убедитесь, что каталог php.d является правильным. Если вы запустите этот

php -i|grep php.d

Все указывает на /etc/php.d или есть другое расположение конфигурации php. На Centos 6 обычно видят версии PHP, которые были установлены для замены того, который поставляется в комплекте с ним, потому что он устарел. Новая версия может быть установлена ​​где угодно, довольно часто в /opt/rh/php[version num here]. Любые дополнительные пакеты, установленные с помощью Yum, скорее всего, не будут ссылаться на новый PHP, если это то, на что ссылается в командной строке.

Если это не показывает какой-либо результат, что это показывает...

php -i |grep ini

Это должно дать вам местоположение файла php.ini, который он использует. Если это не в

/etc/php.ini

Кто-то локально установил php. Вы также должны увидеть строку типа

Scan this dir for additional .ini files => /usr/local/etc/php/5.5/conf.d

Это покажет, что вы искали такие вещи, как odbc. Найдите двоичный файл PHP, т.е.

which php

затем запустите это на нем

nm /usr/local/bin/php |grep odbc

Если это дает вам много символов с odbc в имени, то php был скомпилирован с поддержкой odbc, если это не так, odbc не поддерживается этим двоичным двоичным файлом PHP.