mageni veni vidi ridi | Bonjour,
J'aimerais pourvoir exécuter un fichier PHP (sub_exec.php) en tant qu'un utilisateur existant.
voici la comande fonctionnant parfaitement sous le shell de windows (j'utilise sunar.exe qui me permet d'éviter de tapper le mot de passe) :
Code :
- C:\Documents and Settings\mageni>runas /env /user:mon_utilisateur@mon_domaine "\"C:\\Program Files\\EasyPHP-5.3.3\\php\\php.exe\" \"C:\\Program Files\\EasyPHP-5.3.3\\www\\...\\tests\\sub_exec.php\"" | "C:\\Program Files\\EasyPHP-5.3.3\\www\\...\\auth\\runas\\sanur.exe" mdp
|
J'ai essayé via la fonction exec de PHP :
Code :
- exec('runas /env /user:mon_utilisateur@mon_domaine "php sub_exec.php" | "C:\\Program Files\\EasyPHP-5.3.3\\www\\...\\auth\\runas\\sanur.exe" mdp',$stdout,$retour);
|
et j'ai :
Code :
- $stdout => Array()
- $retour => 1
|
J'ai essayé via la fonction shell_exec de PHP :
Code :
- $stdout = shell_exec('runas /env /user:mon_utilisateur@mon_domaine "php sub_exec.php" | "C:\\Program Files\\EasyPHP-5.3.3\\www\\...\\auth\\runas\\sanur.exe" mdp');
|
et j'ai :
J'ai essayé via la fonction proc_open de PHP :
Code :
- $descriptorspec = array(
- 0 => array("pipe", "r" ), // // stdin est un pipe où le processus va lire
- 1 => array("pipe", "w" ), // stdout est un pipe où le processus va écrire
- 2 => array("file", "C:\\Temp\\error-output2.txt", "a" ) // stderr est un fichier
- );
- $cwd = 'C:\\Temp';
- $process = proc_open('C:\\WINDOWS\\system32\\runas.exe /env /user:mon_utilisateur@mon_domaine "\"C:\\Program Files\\EasyPHP-5.3.3\\php\\php.exe\" \"C:\\Program Files\\EasyPHP-5.3.3\\www\\...\\tests\\sub_exec2.php\"" | "C:\\Program Files\\EasyPHP-5.3.3\\www\\...\\auth\\runas\\sanur.exe" mdp', $descriptorspec, $pipes, $cwd);
- if (is_resource($process)) {
- // $pipes ressemble à :
- // 0 => fichier accessible en écriture, connecté à l'entrée standard du processus fils
- // 1 => fichier accessible en lecture, connecté à la sortie standard du processus fils
- // Toute erreur sera ajoutée au fichier /tmp/error-output.txt
- //echo "\n-".stream_get_contents($pipes[1])."-";
- //echo "\n-".stream_get_contents($pipes[0])."-";
- //fwrite($pipes[1], '"C:\\Program Files\\EasyPHP-5.3.3\\www\\...\\auth\\runas\\sanur.exe" mdp');
- //fwrite($pipes[0], '"C:\\Program Files\\EasyPHP-5.3.3\\www\\...\\auth\\runas\\sanur.exe" mdp');
- //echo "\n-".stream_get_contents($pipes[1])."-";
- //echo "\n-".stream_get_contents($pipes[0])."-";
- fclose($pipes[0]);
- fclose($pipes[1]);
- // Il est important que vous fermiez les pipes avant d'appeler
- // proc_close afin d'éviter un verrouillage.
- $return_value = proc_close($process);
- echo "La commande a retourné $return_value\n";
- }
|
et j'ai :
Code :
- La commande a retourné 1
|
A chaque fois ça se termine en erreur (retour 1).
Une idée ?
d'avance merci,
Mageni
|