2013-03-08 2 views
1

Следующий код работает при выполнении из командной строки в Windows 7 под управлением «php test.php» (PHP 5) - вывод - это просто «тест». Но когда php (v5) запускается через любой браузер, запущенный на сервере apache localhost (v2.2), он не работает, т. Е. Нет вывода (с использованием как прямого эха, так и с использованием методов AJAX). Процесс запускается успешно (проверено с помощью proc_get_status) (означает мне, что это относится и к разрешению). Кажется, что-то связано с трубами. Есть идеи? Есть ли известная вещь, которую я пропускаю?PHP proc_open аномалия канала (Win7/Apache2.2)

<?php 
$descriptorspec = array(
    0 => array("pipe", "r"), 
    1 => array("pipe", "w") 
); 
$process = proc_open("java Test", $descriptorspec, $pipes, null, null,array('bypass_shell'=>true)); 
fclose($pipes[0]); 
echo stream_get_contents($pipes[1]); 
fclose($pipes[1]); 
proc_close($process); 
?> 

ответ

3

Возможно, ваш сервер Apache работает как «система» как неинтерактивная служба. Многие вещи не будут работать и, вероятно, также будут использоваться для консольных приложений. Кроме того, у вас могут быть проблемы с разрешением, потому что ваша консоль (где она работает) имеет права пользователя (ваши), а порожденная консоль имеет системные разрешения.

Если вам действительно нужны трубы, вы можете попробовать запустить apache как пользователь (а не систему) и настроить службу, позволяющую взаимодействовать на рабочем столе.

+0

Возможно, так. Я просто переопределял в JSP эквивалентные действия (на Apache Tomcat). Он достигает первоначальной цели. Благодарю. –

 Смежные вопросы

  • Нет связанных вопросов^_^