/ / відобразити номер версії ghostscript через PHP в ubuntu - php, ghostscript

Показати номер версії ghostscript через PHP у ubuntu - php, ghostscript

Я написав такий код для відображення номера версії ghostscript:

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

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

?>
</body>
</html>

Я можу отримати A надруковано, але не номер версії, чому?

Дякую.

Відповіді:

2 для відповіді № 1

Можливо, ghostscrsipt записує дані в STDERR замість STDOUT. Спробуйте зробити

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

щоб перенаправити stderr на stdout і повторити спробу


1 для відповіді № 2

Ви повинні використовувати var_dump($ver); для налагодження, оскільки ваш код просто працює:

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

Я щойно запустив його на моєму Linux box і згідно з shell_exec() Документи, це повинно бути добре.

Що шукати:

  • Безпечний режим увімкнено?
  • exec() може повернути код виходу / статус повернення команди.
  • якщо він повернеться NULL, побачити ця відповідь.

STDERR та shell_exec ()

shell_exec() поверне лише команди, виведені в STDOUT. У випадку, якщо оболонка не може викликати команду, ця функція повернеться NULL і це приховає те, що було повідомлено про помилку.

Щоб включити помилки також у повернене значення, STDERR потрібно перенаправити на STDOUT. Це робиться шляхом додавання 2>&1 до кінця команди. Ось той самий приклад коду з неправильною командою для демонстрації:

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