Функция system () в PHP печатает переменную 2 раза - PullRequest
2 голосов
/ 02 апреля 2010

Тупой вопрос, этот код:

<?php
$variable = system("cat /home/maxor/test.txt");
echo $variable;
?>

с файлом test.txt:

blah

печать:

blah
blah

Что я могу сделать с функцией system (), чтобы ничего не печатать, чтобы я получил 1 "бла" ???

Ответы [ 5 ]

6 голосов
/ 02 апреля 2010

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

exec ничего не отображает и возвращает последнюю строку вывода.

passthru отображает все, что выводит программа, и ничего не возвращает.

5 голосов
/ 02 апреля 2010

Используйте exec вместо system

http://us.php.net/manual/en/function.system.php#94262

2 голосов
/ 02 апреля 2010

Используйте exec вместо. Чтобы получить весь вывод, а не только последнюю строку, сделайте это:

$variable = array();
$lastline = exec("cat /home/maxor/test.txt", $variable);
echo implode("\n", $variable);
2 голосов
/ 02 апреля 2010

Согласно инструкции - см. system():

system() так же, как версия C функции в том, что она выполняет данная команда и выводит результат .

Что объясняет первое blah


И:

Возвращает последнюю строку команды вывод в случае успеха

И вы возвращаете возвращаемое значение - которое объясняет второе blah.


Если вы хотите выполнить команду и получить полный вывод переменной, вам следует взглянуть на exec или shell_exec.

Первая выдает все строки вывода в массив (см. Второй параметр) ; а второй получит полный вывод в виде строки.

0 голосов
/ 02 апреля 2010

system вызывает фактическую cat программу, которая выводит "бла" из test.txt.Он также возвращает значение обратно в $variable, которое вы затем распечатываете.

Используйте exec или shell_exec вместо системного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...