ocilogon non reconnu depuis terminal

J7
Invité n'ayant pas de compte PHPfrance

03 juil. 2007, 12:00

Bonjour tout le monde,

Je veux exécuter un script php tous les soirs qui rempli une base MySQL depuis une base Oracle (que les enregistrements nouveaux).
Installation sur Windows XP (pour les tests car le serveur est Windows 2000):
Apache 2
Php5
MySQL 4.1
Client Oracle 9i

Le source php est bon : en l’appelant depuis un navigateur tout se passe très bien.
Maintenant, j’ai créé un batch exécutable pour lui appliquer une cron tous les soirs :
@echo off
"C:\…\php\php.exe" -f "C:\…monfichier.php"


Voici mon problème :

Pendant l’exécution de fichier .bat, j’ai ce message d’erreur :
Fatal error: Call to undefined function: oci_connect() in C:\….. (idem avec oiclogon())

Je pense que les dll ne sont pas prises en compte ou quelque chose comme ca !
Comment faire pour charger une dll depuis un fichier batch ?

Avez vous une solution pour ce problème qui devient pressant ?

D’avance merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 juil. 2007, 13:03

selon l'admin système de ma boite, ça serait les variables d'environnement d'Oracle qui serait mal configurées.

Apache passant outre ces variables, pas de soucis via un navigateur mais lors de l'exécution via un .bat , soucis.

Par contre, je ne sais pas comment les corriger :?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 505 Messages

03 juil. 2007, 13:06

Il set possible que ton php client n'utilise pas le meme php.ini que la version apache.
Sous apache, tu fais un phpinfo, et tu regardes où se trouve le php.ini
Sous shell, tu fais un php -i et tu compares.

Si ce ne sont pas les memes, mets à jours ou bien indiques à php.exe ou se trouve le php.ini correcte via l'option -c

J7
Invité n'ayant pas de compte PHPfrance

03 juil. 2007, 13:46

tu regardes où se trouve le php.ini
Sous shell, tu fais un php -i et tu compares.
titerm, j'ai regardé le

Code : Tout sélectionner

Configuration File (php.ini) Path
et pas de soucis de ce coté, les memes.
ça serait les variables d'environnement d'Oracle qui serait mal configurées
zeus, pourquoi pas il faut que je regarde, mais comme toi, je ne vois pas encore comment faire... je vais chercher.

merci à vous 2, mais je continue à chercher...

Mammouth du PHP | 505 Messages

03 juil. 2007, 14:16

le message undefined oci connect, amha, c'est qd la couche oci qui n'est pas chargée. Reste a savoir pourquoi. Quand tu fais php.exe -i est ce que tu as l'entrée OCI ?

je viens de faire un test avec wamp, si je fait php -i , j ai le php.ini du rep courant et pas de couche oci
Si je fais un php -c path_vers_php.ini_d_apache -i J'ai bien la couche OCI, je n'ai aucune var oracle de definie, juste le path vers le bin du client

J7
Invité n'ayant pas de compte PHPfrance

03 juil. 2007, 14:36

A vrai dire, je ne sais pas trop comment savoir si j'ai l'entrée OCI... :oops:
en faisant php -i, j'ai fait recherché "oci" et il n'y a rien. Cela signifie-t-il que la couche oci n'es pas activée?

quand je fais php -c ini_apache -i, j'ai une dizaine de messages "Cannot find module (IP-MIB): At line 0 in (none)", et dans les infos, j'ai
"oci8

OCI8 Support => enabled
Revision => $Revision: 1.183.2.16 $"

cela veut dire qu'il faut que je passe par le php.ini d'apache ? et non celui de php (par défaut) ?

J7
Invité n'ayant pas de compte PHPfrance

03 juil. 2007, 14:46

Tu étais dans le vrai titerm !

j'ai changé de php.ini en faisant

Code : Tout sélectionner

"C:\...php\php.exe" -c "C:\...\apache\php.ini" "C:\...monfichier.php"
et la fonction ocilogon est reconnue.

En ce moment, mon script (tres long) tourne, et la base MySQL gonfle.
Le problème semble donc ciblé !

Maintenant, j'aimerai que cela marche en passant par le php.ini par défaut.
Il faut donc que j'active la couche oci dans php.

J'ai bien décommenté extension=php_oci8.dll dans php.ini de php. Que faire de plus ?

Mammouth du PHP | 505 Messages

03 juil. 2007, 14:50

Oui, si tu n'as pas l'entrée OCI8, inutile d'aller plus loin.

Tu n'es pas forcé d'utiliser le ini de ton apache, mais dans ce cas, il te faut configurer le ini de ta version cli pour charger la couche oci.

Edit le et recherche la ligne avec l'extension oci8 et décommente la, refait un php -i pour vérifier que tu as bien un OCI8 d'actif.

J7
Invité n'ayant pas de compte PHPfrance

03 juil. 2007, 14:52

C'est bon!

Ca a l'air de marché (je n'ai pas laissé le script jusqu'au bout mais il s'est lancé).

Le problème venait bien du php.ini de c:\...php qui était mal configuré.

Un grand merci titerm (et aussi deus pour m'avoir conseillé) !
Tu avais tout à fait raison et tu as su me diriger dans la bonne direction... :D

Bonne continuation, et @+