Вывод shell_exec принудительно выводится на экран

#php #apache #terminal

#php #apache #терминал

Вопрос:

Я использую shell_exec для запуска команд терминала через PHP-скрипт —

 $output=shell_exec('find -L $APACHE_PREFIX ! -type l ! -type s -perm /g=w -ls');
  

но проблема в том, что вместо отправки выходных данных в переменную выходные данные выводятся непосредственно на экран терминала.

Комментарии:

1. Вероятно, вывод получен из stderr. Добавьте это в свою командную строку: 2> amp; 1 и, возможно, вы получите это

Ответ №1:

Решением может быть захват буфера :

 <?php
ob_start();
$output = shell_exec('find -L $APACHE_PREFIX ! -type l ! -type s -perm /g=w -ls 2>amp;1');
$output_captured = ob_get_contents();
ob_end_clean();
?>
  

Комментарии:

1. Привет, Лоик, на самом деле эта команда shell_exec выдает тысячи строк вывода, и все же я сталкиваюсь с той же проблемой. Вывод просто наводняет мой терминал.

2. Отредактировано, с этого момента у вас не будет никаких выходных данных.