/ / Anzeige der Ghostscript - Versionsnummer über PHP in Ubuntu - PHP, Ghostscript

Anzeige der Ghostscript - Versionsnummer über PHP in ubuntu - php, ghostscript

Ich habe den folgenden Code geschrieben, um die Versionsnummer von Ghostscript anzuzeigen:

<html>
<head>
<title></title>
</head>
<body>
<?

$ver = shell_exec("/usr/bin/gs --version");
//$ver = exec(GS_BIN . " --version");
print "$ver";
print "A";

?>
</body>
</html>

Ich kann das bekommen A gedruckt, aber nicht die Versionsnummer warum?

Vielen Dank.

Antworten:

2 für die Antwort № 1

Möglicherweise schreibt ghostscrsipt die Daten in STDERR anstelle von STDOUT. Versuchen Sie es

/usr/bin/gs --version 2>&1

um stderr auf stdout umzuleiten und erneut zu versuchen


1 für die Antwort № 2

Du solltest benutzen var_dump($ver); Zum Debuggen, da Ihr Code einfach funktioniert:

$ php -r "echo shell_exec("/usr/bin/gs --version");"
8.71

Ich habe es gerade auf meiner Linux-Box laufen lassen und nach shell_exec() Dokumente, Es sollte okay sein.

Dinge zu suchen:

  • Abgesicherter Modus aktiviert?
  • exec() kann den Exit-Code / Return-Status des Befehls zurückgeben.
  • wenn es zurückkommt NULL, sehen diese Antwort.

STDERR und shell_exec ()

shell_exec() Gibt nur die in STDOUT geschriebenen Befehle zurück. Falls der Befehl nicht von der Shell aufgerufen werden kann, wird diese Funktion zurückgegeben NULL und es wird versteckt, was als Fehler gemeldet wurde.

Um auch Fehler in den Rückgabewert aufzunehmen, muss STDERR zu STDOUT umgeleitet werden. Dies erfolgt durch Hinzufügen 2>&1 bis zum Ende des Befehls. Hier ist der gleiche Beispielcode mit einem falschen Befehl zur Demonstration:

$ php -r "var_dump(shell_exec("/usr/bin/gs2 --version 2>&1"));"
string(44) "sh: /usr/bin/gs2: No such file or directory
"