Ответ 1
Убедитесь, что вы работаете с правильной конфигурацией php.
запустите следующую команду, чтобы узнать правильный файл odbc ini
php --ini
В настоящее время у меня возникают проблемы с получением 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
не выводит результат.
Убедитесь, что вы работаете с правильной конфигурацией php.
запустите следующую команду, чтобы узнать правильный файл odbc ini
php --ini
Дважды проверьте, есть ли ini файл в /etc/php.d
. Он должен выглядеть примерно как 20-odbc.ini
и должен указывать на .so
файл
Убедитесь, что каталог 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.