Vous devez utiliser var_dump($ver);
à des fins de débogage, car votre code fonctionne tout simplement :
$ php -r "echo shell_exec('/usr/bin/gs --version');"
8.71
Je viens de le faire fonctionner sur ma boîte Linux et selon shell_exec()
Docs ça devrait être bon.
Les choses à rechercher :
- Mode sans échec activé ?
-
exec()
peut renvoyer le code de sortie / le statut de retour de la commande.
- s'il renvoie
NULL
voir cette réponse .
STDERR et shell_exec()
shell_exec()
ne retournera que la sortie des commandes écrite sur STDOUT. Dans le cas où la commande ne peut pas être invoquée par le shell, cette fonction retournera NULL
et il dissimulera ce qui a été signalé comme une erreur.
Pour inclure les erreurs également dans la valeur de retour, STDERR doit être redirigé vers STDOUT. Ceci est fait en ajoutant 2>&1
à la fin de la commande. Voici le même exemple de code avec une commande erronée pour la démonstration :
$ php -r "var_dump(shell_exec('/usr/bin/gs2 --version 2>&1'));"
string(44) "sh: /usr/bin/gs2: No such file or directory
"