質問: Linuxインスタンス上のApacheに,awsコマンドを実行するexec()を書いたPHPファイルを置き,そこへHTTPアクセスしてawsコマンドを実行したいのですが出来ません. awsコマンドをsshで入力した場合は成功します. PHPのコーテーションについて理解が出来ていないかもしれないです. インスタンスにはコマンドの実行を許可するポリシーを持ったロールを割当てています. ``` "; var_dump(exec($cmd, $output,$return_var)); print_r( $output ); var_dump( $return_var ); ?> ``` HTTPアクセスの結果: string(0) "" int(127)と表示されます. ### 補足情報(FW/ツールのバージョンなど) Amazon Linux AMI release 2018.03 Server version: Apache/2.4.34 (Amazon) 追記 -- 割り当てているEC2ロールの詳細?です. 不足していることがあれば追記致します.よろしくお願い致します. ``` { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ec2:RevokeSecurityGroupIngress", "Resource": "arn:aws:ec2:*:*:security-group/*" } ] } ``` 追記2 --- $cmdに改行が入っているご指摘を頂いたので,それを訂正してHTTPアクセスすると127→255に変わりました. ``` HTTPアクセスの結果 aws ec2 revoke-security-group-ingress --group-id sg-xxxxxxx --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 80, "ToPort": 80, "IpRanges": [{"CidrIp": "0.0.0.0/0"}]}]' string(0) "" Array ( ) int(255) ```
回答: 外していたらすみません。 シングルクォートがうまくあたっていないように見えますが、ダブルクォートの中身をコピペしてコマンドラインで実行したら正常に実行できているのでしょうか?