2016-04-21 9 views
12

Ich habe derzeit Probleme, odbc_connect auf meinem CentOS-Server zu arbeiten. Ich habe die Easysoft ODBC-SQL-Server-Treiber mit dem Ziel, zu einem Microsoft SQL Server 2012odbc_connect() auf CentOS 6

ich die Störung erhalten eine Verbindung installiert:

PHP Fatal error: Call to undefined function odbc_connect()

Wenn odbc_connect() verwenden.

> 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 

ich das Paket php-odbc installiert haben und meinen Server neu gestartet wird, ist es etwas, was ich tun muss, um sicherzustellen, dass PHP Zugriff auf die ODBC-Methoden hat?

UPDATES

php --ini 

Punkte

/usr/local/lib/php.ini

Welche jede Erwähnung von ODBC haben tut.

Ausführen des Befehls“

php -i |grep ini 

gibt.

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 

Der Befehl

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

keine Ausgabe gibt

+0

In Ihrem 'phpinfo wissen()', aufgeführt ROTATION? Oder PHAR? – Machavity

+0

Beide scheinen aufgeführt zu werden ja –

+1

Sie sollten die Informationen aus Ihren verschiedenen Kommentaren in Ihre Antwort aufnehmen. Es klingt wie Sie haben eine nicht-Paket-Version von PHP aus irgendeinem Grund installiert. Es wird nicht mit der Paketversion von Erweiterungen funktionieren. Sie müssen entweder das Paket PHP installieren oder die ODBC-Erweiterung manuell installieren. – miken32

Antwort

3

Überprüfen Sie, dass es ineine INI-Datei ist. Es sollte so aussehen wie 20-odbc.ini und sollte auf die .so Datei zeigen

+0

Bitte sehen Sie das Ende meines Beitrags 'Ich habe das Paket php-odbc installiert und meinen Server neu gestartet, gibt es noch etwas, was ich tun muss, um sicherzustellen, dass PHP Zugriff auf die ODBC-Methoden hat?' –

+0

@ZacPowell Tut mir leid. Meine Antwort aktualisiert – Machavity

+0

Ich habe die Frage mit Details von /etc/php.d aktualisiert –

3

Stellen Sie sicher, dass das php.d-Verzeichnis das richtige ist. Wenn Sie dies ausführen

php -i|grep php.d 

Ist alles Punkt /etc/php.d oder gibt es eine andere php Konfiguration Lage. Auf Centos 6 ist es üblich, Versionen von PHP zu sehen, die installiert wurden, um die Version zu ersetzen, die mitgeliefert wird, da sie veraltet ist. Die neue Version könnte überall installiert werden, oft unter /opt/rh/php[version num here]. Alle zusätzlichen Pakete, die mit Yum installiert werden, verweisen wahrscheinlich nicht auf das neue PHP, wenn dies in der Befehlszeile angegeben ist.

Wenn das ist keine Ausgabe zeigt, was diese Show macht ...

php -i |grep ini 

Dies sollten Sie den Speicherort der php.ini geben Datei ist es mit. Wenn es nicht in

ist
/etc/php.ini 

Jemand hat PHP lokal installiert. Sie sollten auch eine Zeile wie

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

sehen Dieses Sie für Dinge wie odbc es sieht zeigen waren.Finden Sie die PHP-Binary dh

which php 

dann laufen diese auf sie

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

Wenn dies gibt Ihnen eine Menge von Symbolen mit odbc im Namen dann php mit ODBC-Unterstützung kompiliert wurde, wenn es nicht der Fall ist Dann wird ODBC von dieser PHP-Binärdatei nicht unterstützt.

+0

Dieser Befehl gibt keine Ausgabe –

+0

Konfigurationsdatei (php.ini) Pfad =>/usr/local/lib geladene Konfigurationsdatei =>/usr/local/lib/php.ini –

7

Stellen Sie sicher, dass Sie an der richtigen PHP-Konfiguration arbeiten.

führen Sie den folgenden Befehl, um die richtige odbc ini-Datei

php --ini 
+0

php --ini Konfigurationsdatei (php.ini) Pfad:/usr/local/lib Geladene Konfigurationsdatei: /usr/local/lib/php.ini Suche nach zusätzlichen INI-Dateien in: (none) Zusätzliche .ini-Dateien analysiert: (keine) –

+0

Versuchen Sie zu sehen, ob Ihre Erweiterung in /usr/local/lib/php.ini aktiviert ist? –

+0

die Datei hat keine Erwähnung von ODBC –