Php aws cli在运行shell_exect时拒绝访问

Php aws cli在运行shell_exect时拒绝访问,php,laravel,amazon-web-services,aws-cli,Php,Laravel,Amazon Web Services,Aws Cli,在命令行上,我可以运行: aws s3同步s3://我的桶--干跑步 很好 但是,我尝试在Laravel中将其作为命令运行: public function handle() { $command = 'aws s3 sync s3://my_bucket . --dryrun'; shell_exec($command); } 我得到: 致命错误:调用时发生错误(AccessDenied) ListObjectsV2操作:访问被拒绝 为什么同一

在命令行上,我可以运行:

aws s3同步s3://我的桶--干跑步

很好

但是,我尝试在Laravel中将其作为命令运行:

public function handle()
    {
        $command = 'aws s3 sync s3://my_bucket . --dryrun';
        shell_exec($command);
    }
我得到:

致命错误:调用时发生错误(AccessDenied) ListObjectsV2操作:访问被拒绝


为什么同一个命令在命令行上工作,而不是在我的PHP应用程序中工作?

我遵循@Sammitch的建议,使用了

--配置我的配置文件

其中,my_config是一组命名的配置参数,使用以下方法创建:

aws configure --profile my_config

来源:

通过PHP运行时,可能没有设置环境变量,因此AWS CLI不知道从何处自动加载凭据。明确指定凭据文件,并检查CLI docs/help/manpage以了解如何执行此操作。或者,您可以使用一些库直接与AWS API交互,而不是来回访问CLI。您介意将此作为响应发布吗?或者我可以用我实际使用的命令回答我自己的问题。