CentOS 6上的odbc_connect()

时间:2016-04-21 13:27:08

标签: php odbc

我目前在使用odbc_connect在CentOS服务器上运行时遇到问题。我已经安装了Easysoft ODBC-SQL-Server驱动程序,目的是连接到Microsoft SQL Server 2012。

我收到错误:

  

PHP致命错误:调用未定义的函数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

没有输出。

3 个答案:

答案 0 :(得分:7)

确保您正在使用正确的php配置。

运行以下命令以了解正确的odbc ini文件

cast(date_format('20141014123456789', 'yyyyMMddHHmmssSSS') as timestamp)

答案 1 :(得分:3)

仔细检查SELECT [MembershipCount], Count(1) FROM ( SELECT count(membership.memberid) as MembershipCount from Membership, Package WHERE membership.PackageId = Package.Id AND membership.DiscountPercentage != 100 AND Package.PackageTypeId != 1 AND membership.MembershipStateId != 5 AND Membership.LocationId = 1 group by memberid ) order by Count(1) Desc 中是否有ini文件。它看起来应该是/etc/php.d,应该指向20-odbc.ini文件

答案 2 :(得分: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支持编译的,如果没有,则PHP二进制文件不支持odbc。