Невозможно выполнить команду aws cli из exec или shell_exec внутри php - PullRequest
0 голосов
/ 30 августа 2018

Я установил aws cli на мою локальную машину для разработки Ubuntu 18.04. Он отлично работает с терминала, например, если я наберу:

$which aws Я получаю: /usr/local/bin/aws. Однако, если я пытаюсь запустить эту команду из скрипта php, она ничего не делает.

$cmd ="aws --version";

try {
    $exec = exec($cmd,$output, $return);
    $exec2 = shell_exec($cmd);
}
catch(Exception $e)
{
    echo 'Message: ' .$e->getMessage();
}

exec2 возвращает ноль, exec возвращает 127.

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

Я знаю, что это можно сделать с помощью php sdk, но по разным причинам я не могу это использовать.

Может кто-нибудь объяснить, как заставить это работать на Ubuntu 18.04 с php?

1 Ответ

0 голосов
/ 31 августа 2018

Мой код работал все время. Проблема заключалась в том, что мне пришлось перенаправить stdout в stderr, используя 2> & 1 в конце команды.

 $cmd = "aws redshift restore-table-from-cluster-snapshot --cluster-identifier {$this->redshift_cluster_identifier} --snapshot-identifier {$this->snapshot_identifier} --source-database-name citnow --source-table-name {$tableName} --target-database-name citnow --new-table-name {$newTableName} 2>&1";
        $exec = exec($cmd,$output, $return);
...