Page 1 sur 1
ocilogon non reconnu depuis terminal
Posté : 03 juil. 2007, 12:00
par J7
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
Posté : 03 juil. 2007, 13:03
par zeus
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

Posté : 03 juil. 2007, 13:06
par titerm
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
Posté : 03 juil. 2007, 13:46
par J7
tu regardes où se trouve le php.ini
Sous shell, tu fais un php -i et tu compares.
titerm, j'ai regardé le
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...
Posté : 03 juil. 2007, 14:16
par titerm
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
Posté : 03 juil. 2007, 14:36
par J7
A vrai dire, je ne sais pas trop comment savoir si j'ai l'entrée OCI...
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) ?
Posté : 03 juil. 2007, 14:46
par J7
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 ?
Posté : 03 juil. 2007, 14:50
par titerm
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.
Posté : 03 juil. 2007, 14:52
par J7
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...
Bonne continuation, et @+