Bonjour,
Dans la continuité de ce post :
https://www.developpez.net/forums/d2...-commande-dir/
Je constate maintenant que passthru($cmd) n'exécute pas toutes les commandes dos lorsque php est utilité en tant que module apache (pages web) problème de droits utilisateur. (y a t il une solution pour cela ?). Du coup je passe par proc_open() qui marche dans tous les cas. Par contre comme j'essaie de lire les données texte sur la sortie de la commande dos, j'ai besoin de les lire dans le format de texte adéquat soit UTF8 (format d'origine du texte). Pour cela comme indiqué dans le post initial (voir lien au dessus) j'utilise une commande précédée de chcp 65001 :
$cmd="chcp 65001 & DIR /-C \"".$chemin."\""
Lorsque cette commande est envoyée sur proc_open, cela fonctionne mais le texte récupéré à l'aide de la fonction :
stream_get_contents($ressource_proc);
n'est pas au format attendu soit UTF-8 mais transformé dans un autre format qui détruit les symboles spéciaux comme é, €... : je n'arrive pas à trouver le format de conversion et je pense que la conversion est destructive au final.
En revanche lorsque la commande dos est redirigée vers le fichier "output.txt" :
$cmd="chcp 65001 & DIR /-C \"".$chemin."\" > output.txt"
celui-ci donne bien le résultat attendu : le texte dans le format UTF-8 sans aucune transformation ni erreur. Je ne comprends pas pourquoi je n'obtiens pas les mêmes résultats dans les deux cas et je souhaite trouver une solution évitant la création de fichiers ce qui alourdit le programme inutilement.
Partager