За последние 24 часа нас посетили 16636 программистов и 1626 роботов. Сейчас ищут 1055 программистов ...

Команда не выдает рузультат

Тема в разделе "Установка PHP", создана пользователем MrSullex, 20 ноя 2015.

  1. MrSullex

    MrSullex Активный пользователь

    С нами с:
    15 сен 2015
    Сообщения:
    122
    Симпатии:
    1
    Здравствуйте,из-за чего этот код не выдает результат?
    $output = `quota -u domz | tail -n 1 | awk '{print $4}'`;
    echo "$output";
    А если ввести другую команду,то работает.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Еесли напрямую в терминале запустить, результат есть? И какая другая команда работает?
     
  3. MrSullex

    MrSullex Активный пользователь

    С нами с:
    15 сен 2015
    Сообщения:
    122
    Симпатии:
    1
    Если напрямую,то результат есть. Работает любая команда,даже если просто прописать quota,то она выполнится с кода. А то что в теме почему-то вообще ничего не выдает.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    1) Может это как-то связано с пользователем? В консоли ты работаешь как пользователь domz? А вебскрипт из-под www-data вероятно. Для чистоты эксперимента надо под ним же в консоли попробовать.
    2) в $output наверное только stdout попадает, а stderr пролетает мимо. Понимаешь?
     
  5. MrSullex

    MrSullex Активный пользователь

    С нами с:
    15 сен 2015
    Сообщения:
    122
    Симпатии:
    1
    Если честно не очень понял,но в консоли эта команда работает. Пользователя указал для примера.
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    Ппц. Все процессы работают под каким-то пользователем. Код из первого сообщения ты на сайте запускаешь? Выполни там `whoami`. И в консоли тоже. Разница есть?

    Добавлено спустя 4 минуты 50 секунд:
    Консольные команды выводят нормальный результат в поток stdout, а текст ошибок в stderr. В консоли они оба попадают на экран. А при вызове как у тебя - не факт, что оба в одно место сливаются! Это в доках стоит проверить.

    Удачи в изысканиях!

    update:
    Оператор исполнения, так это называется, на самом деле вызывает функцию shell_exec(). Поэтому максимум инфы можно извлечь из описания и комментариев к этой функции: http://php.net/manual/ru/function.shell-exec

    Вот о чём я говорил: что-то там вероятно не так, но ты ошибку не видишь. Надо перенаправить поток stderr в stdout чтобы получить сообщение.