Intereting Posts
Маршруты администратора группы Laravel Получить количество страниц в документе PDF Получать пользовательские данные с помощью токена доступа в приложении клиента паспорта laravel Как получить результат Laravel Query Builder как целое число Храните все изменения данных с каждой информацией (например, Stackoverflow) Отправить письма с прикрепленным файлом в Magento Cronjob php – как открыть окно печати, когда файл pdf открывается на веб-странице? PHP Server – CLI перестала работать Буфер дополнительной информации с буфером PHP Обмен пользователями между двумя базами данных Получение ошибки в рабочей среде, работающая нормально в localhost Prestashop перенаправляет на старый домен после его изменения в базе данных require_once для глобальной области действия внутри функции Как получить все привязки матчей подгрупп с preg_match_all ()? PHP: как избежать повторного использования функций?

PHP exec Java на Windows не производит вывод

Я прочитал много похожих вопросов о моей проблеме, у меня, похоже, нет моей проблемы. Если это актуально, я запускаю PHP 5.3.8 на Apache 2.2 и PHP exec () работает как nt authority\system

 $cmd = "java -version"; $res = exec($cmd, $output, $return); var_dump($res, $output, $return); 

Производит:

 string '' (length=0) array empty int 0 

$return является 0 намеками на то, что это было успешным. Интересно, если я запустил:

 $cmd = "java -version 2> response"; 

Файл создается с ожидаемым выходом:

 java version "1.6.0_24" Java(TM) SE Runtime Environment (build 1.6.0_24-b07) Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode) 

Поэтому мой вопрос: почему $output не заполняется?

Комментарий

Результат $res = exec("dir c:", $output, $return);

 string ' 2 Dir(s) 335,636,791,296 bytes free' (length=51) array 0 => string ' Volume in drive C is Local Disk' (length=32) 1 => string ' Volume Serial Number is D87C-E25C' (length=34) 2 => string '' (length=0) ... 12 => string ' 5 File(s) 1,158 bytes' (length=45) 13 => string ' 2 Dir(s) 335,636,791,296 bytes free' (length=51) int 0 

Solutions Collecting From Web of "PHP exec Java на Windows не производит вывод"

попробуй это

 $output = `java -version 2>&1` 

наблюдайте за обратными окнами вокруг команды, он служит точно так же, как команда оболочки

2> & 1 должен перенаправить ошибку на stdout, поскольку java по умолчанию использует stderror!

Кажется, вы сравниваете яблоки с апельсинами, так как во втором примере вы перенаправляете поток stderr, пока вы этого не делаете в первом случае. Я предлагаю всегда перенаправлять stderr на stdout при использовании вызовов типа exec иначе вы потеряете этот вывод

В то время как не «ответ» – то, что я закончил, это перенаправить все выходные данные на STDOUT и проверить $return for 0.

Это может быть связано с этой ошибкой , хотя я выполняю 5.3, похоже, соответствует моему сценарию