5 votes

Où puis-je trouver les détails des codes d'erreur CreateProcess ?

Je lance en php ce qui suit :

$res = proc_open($cmd, $descriptorspec, $pipes, "C:\\xampp\htdocs\\",null,array('bypass_shell'=>true));

Le problème est qu'il renvoie l'erreur suivante :

Avertissement: proc_open() : CreateProcess a échoué, code d'erreur - 3

Où puis-je trouver la signification de cette erreur ?

PS : c'est sur un serveur Windows 2007. SP2. L'utilisateur est administrateur, accès complet. PHP est en version 5.3.1

10voto

Matt Gibson Points 15086

Sous Windows, CreateProcess ne retourne en fait pas de code d'erreur. Au lieu de cela, vous utilisez GetLastError pour trouver plus de détails si CreateProcess échoue, puis utilisez FormatMessage pour transformer le code d'erreur de GetLastError en une description appropriée. (Les codes d'erreur de GetLastError peuvent également être décodés en utilisant cette liste)

En regardant le code source de proc_open(), PHP fait en fait le GetLastError() pour vous en cas d'échec, et le code d'erreur qui est enregistré est le retour de GetLastError() plutôt que de CreateProcess (qui renvoie un BOOL, peu probable d'être 3 :) )

Remarquez que proc_open utilise ceci pour afficher le message :

php_error_docref(NULL TSRMLS_CC, E_WARNING, "CreateProcess failed, error code - %u", dw);

...donc le "-" que vous avez avant le 3 est juste un trait d'union, pas un signe négatif. Vous obtenez donc le code d'erreur 3, qui, selon cette liste signifie "Le système ne trouve pas le chemin spécifié".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X