2019年8月22日木曜日

phpのexec関数でコマンド実行時に、エラーが発生した場合はエラーが表示されていません

phpのexec関数でawsのコマンドを実行したら、エラーが発生したが、何も表示されませんでした。


<?php

$ret = exec("aws s3 ls", $out, $status);
var_dump($ret);
var_dump($out);
var_dump($status);

$statusの値を確認したところ、0ではないことをわかりました。ただ、エラーも何も出力されてないので、どこか駄目なのかさっぱりです。

そんなとき、標準エラーも標準出力へ吐き出すように設定すれば解決できます。

標準エラー出力も標準出力へ吐き出すには2>&1を使います。
改修後、以下になります。


<?php

$ret = exec("aws s3 ls 2>&1", $out, $status);
var_dump($ret);
var_dump($out);
var_dump($status);
再度実行後、ようやくエラーが表示されるようになりました。


Unable to locate credentials. You can configure credentials by running "aws configure
httpdはapacheユーザーとして実行されていますが、apacheユーザーのaws設定がうまくできてないことがわかりました。

0 件のコメント:

コメントを投稿