2015-10-03 2 views
1

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

$output = exec('php yii migrate/up [email protected]/dektrium/yii2-user/migrations'); 
echo "<pre>$output</pre>"; 

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

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

exec("php yii migrate/up [email protected]/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 ");'? Не имеет никакого смысла ... Вам нужно написать (эхо) строку в трубку, записывающую на ввод команд. Поэтому вам нужно больше труб. Вам нужно запустить команду, которую вы выполняете другим способом, чтобы иметь возможность подключать к ней трубы. – arkascha

+0

Не работает, он говорит: Ошибка: Миграция не удалась. Каталог, указанный в migPayPath, не существует: @ve ndor/dektrium/yii2-user/migrations; – FosAvance

+0

«yes» не является командой: '' yes 'не распознается как внутренняя или внешняя команда, операционная программа или пакетный файл. ' – FosAvance

ответ

1

Попробуйте с

exec("yes | php yii migrate/up [email protected]/dektrium/yii2-user/migrations") 

Таким образом конвейер выхода да на ваш PHP скрипт.

+0

Это не работает. Я хотел использовать «да» только для подтверждения этой команды: применить вышеуказанные миграции? (да | нет) [нет]. Но я не знаю, как это сделать, я был googleing, но не смог найти – FosAvance

+0

вы пробовали с помощью 'exec (« echo yes | php yii migrate/up --migrationPath = @ vendor/dektrium/yii2-user/migrations ")'? – nessuno

+0

Теперь он работает, спасибо вам большое. Я ошибся во время его выполнения. – FosAvance

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