shell_exec отвечает на команду

1

Я пытаюсь выполнить команду на моем сервере через php-скрипт. У меня есть cPanel, но я получаю доступ к php файлу через мой домен. Скрипт:

$output = exec('php yii migrate/up --migrationPath=@vendor/dektrium/yii2-user/migrations');
echo "<pre>$output</pre>";

Он работает, но вывод: Apply the above migrations? (yes|no) [no]: Apply the above migrations? (yes|no) [no]:

Я не знаю, как ответить на эту команду. Я попробовал код ниже, но он не работает:

exec("php yii migrate/up --migrationPath=@vendor/dektrium/yii2-user/migrations")
    $handle = fopen ("php://stdin","r");
    exec("yes");
    $line = fgets($handle);
    if(trim($line) != 'yes'){
        echo "ABORTING!\n";
        exit;
    }
    echo "\n";
    echo "Thank you, continuing...\n";
  • 0
    Что это значит делать: exec("yes"); ? Не имеет никакого смысла ... Вам нужно записать (повторить) строку в канал, записывающий на вход этих команд. Таким образом, вам нужно больше труб. Вам нужно запустить команду, которую вы выполняете другим способом, чтобы иметь возможность прикрепить к ней каналы.
  • 0
    Не работает, он говорит: Ошибка: Миграция не удалась. Директория, указанная в миграционном пути, не существует: @ve / dektrium / yii2-user / migrations;
Показать ещё 5 комментариев
Теги:

1 ответ

1
Лучший ответ

Попробуйте

exec("yes | php yii migrate/up --migrationPath=@vendor/dektrium/yii2-user/migrations")

Таким образом вы передаете вывод yes в ваш php-скрипт.

  • 0
    Это не работает. Я хотел использовать «да» только для подтверждения этой команды: Применить перечисленные выше миграции? (да | нет) [нет]. Но я не знаю, как это сделать, я гуглил, но не мог найти
  • 1
    вы пробовали с exec("echo yes | php yii migrate/up --migrationPath=@vendor/dektrium/yii2-user/migrations") ?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню