Forum Clubic

J'ai une RHEL4 avec php. je voudrais ajouter un module oci8, comment faire ?

J’ai les rpm par défault d’apache, et php4.3.9. j’ai installé oracle instant client.
Apparement il faut configurer php avec /configure --with-oci=[DIR] mais comment faire avec un rpm par défault ??
Merci

Ca fait longtemps que je n’ai pas touche a une RHEL, a mon avis il faut que tu install les rpm -dev (il doit y avoir un php4XXXX-dev). Tu devrais ainsi recuperer les elements permettant d’effectuer ta compile.

j’ai chopé un rpm interessant: php-oci8-4.3.9-3.el4.i386.rpm mais quant je veux l’installer,


attention: php-oci8-4.3.9-3.el4.i386.rpm: signature V3 DSA: NOKEY, key ID e42d547b
erreur: Dépendances requises:
        libclntsh.so.10.1 est nécessaire pour php-oci8-4.3.9-3.el4.i386

Hors, libclntsh.so.10.1 est installé avec oracle instant client.rpm. (j’ai aussi installé oracle instant client devel).

j’ai bien déclaré la variable d’environement: $LD_LIBRARY_PATH, mais rien n’y fait.
impossible de trouver libclntsh.so.10.1.rpm …

Lorsque tu install un rpm, il ne va pas verifier que le fichiers est present, il verifie les dependances du package (en l occurence libclntsh.so.10.1), comme tu n’as pas de package fournissant cette dependance il n’est pas content. Tu peux essayer en ajoutant --force comme option lors de l’installation du rpm, ca ne garantie pas que ca marchera mais au moins il installera ton rpm (il est possible que la syntaxe est changee, je suis quasiement certains qu’il y a plusieurs niveau pour forcer rpm a installer dont l’un forcant les dependances)

Edit : erreur, l option en question est --nodeps
Edité le 19/12/2007 à 11:42

j’ai réussi a l’installer, tout a l’air ok, j’ai bien le oci8.so que je cherchais, le oci.ini chargé via le php.ini
hors quant je lance phpinfo(), toujours pas de module oci chargé (meme apres le restart d’httpd)

Ce qui m’intrigue c’est dans le


Configure Command 	 './configure' '--build=i386-redhat-linux' '--host=i386-redhat-linux' '--target=i386-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--enable-force-cgi-redirect' '--disable-debug' '--enable-pic' '--disable-rpath' '--enable-inline-optimization' '--with-bz2' '--with-db4=/usr' '--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-gd=shared' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-ncurses=shared' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' '--with-pspell' '--with-xml' '--with-expat-dir=/usr' '--with-dom=shared,/usr' '--with-dom-xslt=/usr' '--with-dom-exslt=/usr' '--with-xmlrpc=shared' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-bcmath' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-track-vars' '--enable-trans-sid' '--enable-yp' '--enable-wddx' '--with-pear=/usr/share/pear' '--with-imap=shared' '--with-imap-ssl' '--with-kerberos' '--with-ldap=shared' '--with-mysql=shared,/usr' '--with-pgsql=shared' '--with-snmp=shared,/usr' '--with-snmp=shared' '--enable-ucd-snmp-hack' '--with-unixODBC=shared,/usr' '--enable-memory-limit' '--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio' '--enable-mbstring=shared' '--enable-mbstr-enc-trans' '--enable-mbregex' '--with-mime-magic=/usr/share/file/magic.mime' '--with-apxs2=/usr/sbin/apxs'

pas de --with-oci …

Comment modifier ca sans devoir reinstaller php ?

Tu as installe un module binaire, la ligne de configure de php n’a pas change (d’ailleurs tu l aurais installe avec pear ou equivalent elle n’aurait pas changer). L’important pour toi est que oci8.so soit charge et que tu puisses l’utiliser.
Au pire tu ecrits un script qui fait un connect (meme sans que les paramatres soient valide), si la commande n’existe pas il va te jetter en te disant qu’elle n existe pas, si elle existe il va te jetter parceque les parametres ne sont pas bon.
Tu es certains qu’il n y a pas une reference au modules charge dans phpinfo() ?

Fatal error: Call to undefined function: ocilogin() in /var/www/html/connexion.php on line 4

Dans php.ini as tu mis : extension=oci8.so (en ayant naturellement place le fichier au bon endroit)

dans le php.ini


extension_dir = /usr/lib/php4 

–> ou il y a bien le oci8.so

[root@xxxxxxxxx php.d]# cat oci8.ini

; Enable oci8 extension module
extension=oci8.so

dans le phpinfo()

[code]
dans le php.ini


extension_dir = /usr/lib/php4 

–> ou il y a bien le oci8.so

[root@xxxxxxxxx php.d]# cat oci8.ini

; Enable oci8 extension module
extension=oci8.so

dans le phpinfo()

[code]
Configuration File (php.ini) Path /etc/php.ini
Scan this dir for additional .ini files /etc/php.d
additional .ini files parsed /etc/php.d/ldap.ini, /etc/php.d/mysql.ini, /etc/php.d/oci8.ini, /etc/php.d/odbc.ini, /etc/php.d/pgsql.ini

[code]

Tu es certains que ton .so est au bonne endroit ?

Tu n as pas un probleme de chemin pour acceder au fichier, tu es certains que oci8.so est dans le bon repertoire ?

Apres un petit tour sur la doc php/oracle il ne semble pas que la fonction ocilogin() soit defini, le message est donc normal. Essais avec oci_connect(string $username , string $password [, string $db [, string $charset [, int $session_mode ]]] ) ce sera plus probant :wink:

mon fichier .so est dans /usr/lib/php4 avec les modules ldap, odbc

concernant le ocilogin, c’est une erreur de frappe, c’etait ocilogon. (qui marche sur mon easyphp)

Ce qui m’intrigue c’est quant je fait un php -m, je vois bien le oci8 chargé, quant je tape:


[root@xxxxxxxxx etc]# php
<?
ocilogon("#user","#pass","\\serveur.domain/INSTANCE");
?>

Le compilateur ne me jete pas, pour lui tout est bon
Si je me plante dans le nom d’instance, ou que je met un SUID seul, il me dit TNS name déconne (normale j’en ai pas)

Et dans le phpinfo(), toujours pas de module oci8 …

Bref ca m’a gonflé, j’avai testé en installant une autre version de php4 que je n’arrive pas a desinstaller

Bref, ce soir: format, et reinstall RHEL, et on véra demain :slight_smile:

Fait gaffe les fichiers de conf pour le serveur web et pour le cli ne sont pas automatiquement les meme, ce qui expliquerait des comportement different suivant les cas.

ce que je pense que je vais faire c’est installer une distrib nue
et installer apache, oracle instant client, et php 4 a la mano (en tar.gz)

En esperant que ca ira mieux demain :pt1cable:

Vu que le dev php4 s arrete en aout autant ne pas trop insister avec. Autant passer direct au 5 voir au 6.

bahh, ca on véra en aout :slight_smile:
aujourd’hui l’installation c bien passé, par contre cette fois j’ai un soucis avec apache que je vais poster sur un autre topic (la bonne vieille erreur 403)