1er cas : le premier php.ini trouvé est celui présent dans le répertoire courant => fichier php.ini surement différent (sauf liens/raccourcis vers un même php.ini) en mode CLI et en mode web (répertoire courant différent) mais contenu pouvant être parfaitement identique
2éme cas : fichier php.ini trouvé dans un répertoire autre que le répertoire courant => même fichier php.ini en mode CLI et en mode web
3éme cas : pas de php.ini trouvé dans le chemin de recherche => pas de différence de réglage sauf pour certaines options / voir documentation de php
Au niveau de l'analyse et du traitement du fichier ".ini" , c'est identique dans tous les cas sauf pour quelques options qui sont ignoré en mode CLI et pas en mode web :
- "zlib.*" : l'utilisateur n'ayant pas de décodeur zlib derrière les yeux, ça reste sans effets en mode CLI.
En fait je ne sais pas si c'est vraiment ignoré mais de toute manière la compression zlib n'est appliqué que si le navigateur/utilisateur dit à php qu'il est capable de le décompresser. Vu qu'on ne lui dit jamais en mode CLI, c'est comme si c'était ignoré.
- "max_execution_time" : le mode CLI étant fait pour des programmes qui sont sans limites de temps connus (programmes utilisé par un humains / programmes de type automate / ...) il est donc ignoré.
- "output_buffering" : là j'en suis pas certain, c'est juste qu'un programme en mode CLI n'a pas vocation à afficher ses données par paquets mais plutôt au fur et à mesure
- les "cgi." et "fastcgi." sont propre au mode CGI (appel d'un .exe par le serveur web) / Elles sont donc ignoré quand le serveur web charge l'extension apache (php*.dll) et quand on exécute php en mode CLI.
- peut être deux trois autres que je ne connais pas.
Pour le problème du exec je me pose une question qui rejoint un peu celle de CyberDenix : php est il lancé comme module d'un serveur web qui est exécuté comme un "service" de windows? Si c'est le cas, c'est peut être pour ça que la fenêtre du programme ne s'affiche pas. Sinon il faut regarder sous quel utilisateur est lancé le dit programme. S'il est lancé avec un utilisateur différent de l'utilisateur courant il faudra chercher pourquoi (fichier ".bat" qui parasite l'appel, raccourcis windows dans le répertoire du programme qui modifie les conditions d'exécution du programme, ...)
PS en passant : A noter pour sa culture personnelle qu'en mode web, à partir de php 5.3.0 , on pourra aussi indiquer l'équivalent d'un fichier php.ini propre au répertoire courant du site web. Ca fonctionnera un peu comme le ".htaccess" d'apache mais avec la syntaxe du php.ini. Ça permettra de modifier certains comportement de php (comme si on le faisait directement dans le php.ini avec certaines limitations) sans que ces changements soit appliqués au serveur entié.
Message édité par omega2 le 22-09-2008 à 17:59:29