PHP 5.6 OCI8-Installationsproblem:

PHP 5.6 OCI8-Installationsproblem:

Ich versuche, die OCI8-Erweiterung auf Red Hat 7 (PHP 5.6.x) zu installieren. Ich habe mindestens zwei Tage damit verbracht, dies herauszufinden, und dabei SuperUser und StackOverflow durchforstet. Bisher hat keine der Antworten das Problem behoben.

Ich habe den Oracle Instant Client installiert unter:

/usr/lib/oracle/12.1/client64/lib/

Wenn ich den folgenden Befehl ausführe:

pecl install oci8-2.0.10 --with-oci8=instantclient,/usr/lib/oracle/12.1/client64/lib/

Ich werde aufgefordert, den Pfad zu ORACLE_HOME anzugeben. Ich habe bestätigt, dass dieser bereits definiert ist, und drücke die Eingabetaste, um fortzufahren. Sobald ich dies tue, werden die Make-Befehle ausgeführt und es wird folgender Fehler ausgegeben:

/bin/sh /var/tmp/pear-build-rootb3mVn8/oci8-2.0.10/libtool --mode=compile cc  -I. -I/var/tmp/oci8 -DPHP_ATOM_INC -I/var/tmp/pear-build-rootb3mVn8/oci8-2.0.10/include -I/var/tmp/pear-build-rootb3mVn8/oci8-2.0.10/main -I/var/tmp/oci8 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/home/oracle/oracle/product/rdbms/public -I/home/oracle/oracle/product/rdbms/demo  -DHAVE_CONFIG_H  -g -O2   -c /var/tmp/oci8/oci8.c -o oci8.lo
libtool: compile:  cc -I. -I/var/tmp/oci8 -DPHP_ATOM_INC -I/var/tmp/pear-build-rootb3mVn8/oci8-2.0.10/include -I/var/tmp/pear-build-rootb3mVn8/oci8-2.0.10/main -I/var/tmp/oci8 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/home/oracle/oracle/product/rdbms/public -I/home/oracle/oracle/product/rdbms/demo -DHAVE_CONFIG_H -g -O2 -c /var/tmp/oci8/oci8.c  -fPIC -DPIC -o .libs/oci8.o
In file included from /var/tmp/oci8/oci8.c:48:0:
/var/tmp/oci8/php_oci8_int.h:60:17: fatal error: oci.h: No such file or directory
 #include <oci.h>
                 ^
compilation terminated.
make: *** [oci8.lo] Error 1
ERROR: `make' failed

Ich verstehe, dass die Datei oci.h nicht gefunden werden kann. Ich gehe also davon aus, dass der Fehler behoben wird, wenn ich den Speicherort des Oracle Instant Clients mitteile. Beim vorherigen Befehl, in dem die Umgebungsvariable ORACLE_HOME angefordert wird, gebe ich also Folgendes an:

checking Oracle ORACLE_HOME install directory... /usr/lib/oracle/12.1/client64/lib/
checking ORACLE_HOME library validity... configure: error: Expected an ORACLE_HOME top level directory but /usr/lib/oracle/12.1/client64/lib/ appears to be an Instant Client directory. Try --with-oci8=instantclient,/usr/lib/oracle/12.1/client64/lib/
ERROR: `/var/tmp/oci8/configure --with-oci8=/usr/lib/oracle/12.1/client64/lib/' failed

Ich kann nicht herausfinden, warum es fehlschlägt. Ich habe gehört, dass das SDK installiert werden muss, aber meines Wissens habe ich bei der Installation des Instant Clients auch das SDK installiert.

Für jede Hilfe wäre ich sehr dankbar. Danke!

Antwort1

Ich hatte genau das gleiche Problem, mit einem Unterschied, in meinem Fall php54. Ich denke/hoffe, dass meine Lösung auch für Sie funktioniert:

echo "instantclient,/usr/lib/oracle/12.1/client64/lib"|pecl install oci8-2.0.10

habe den OCI-Treiber ohne Probleme installiert. Da die Standard-PHP-Version 5.3 war, habe ich in meinem Fall die von RH bereitgestellten Pakete für 5.4 verwendet und musste /opt/rh/php54/enable als Quelle verwenden, bevor ich pecl für die OCI-Installation gestartet habe. Ich hoffe, das hilft

verwandte Informationen