Php 我能';无法连接我的Amazon S3帐户

Php 我能';无法连接我的Amazon S3帐户,php,codeigniter,amazon-s3,amazon-ec2,Php,Codeigniter,Amazon S3,Amazon Ec2,我有一个在AmazonEC2Ireland(Ubuntu)托管的项目 我用CodeIgniter开发,我想用S3来存储文件 我已经使用了三个或四个特定的库来将S3与CodeIgniter一起使用,但都不起作用。我尝试了官方的AWS SDK for PHP,兼容性测试还可以,但示例不起作用。我认为问题在于访问S3 我在S3管理中创建了三个bucket,两个在爱尔兰,一个在美国标准,我可以通过浏览器、S3管理器(S3Fox)和Cyberduck访问文件。但我无法访问我的项目 有人能帮我吗 对不起,我

我有一个在AmazonEC2Ireland(Ubuntu)托管的项目

我用CodeIgniter开发,我想用S3来存储文件

我已经使用了三个或四个特定的库来将S3与CodeIgniter一起使用,但都不起作用。我尝试了官方的AWS SDK for PHP,兼容性测试还可以,但示例不起作用。我认为问题在于访问S3

我在S3管理中创建了三个bucket,两个在爱尔兰,一个在美国标准,我可以通过浏览器、S3管理器(S3Fox)和Cyberduck访问文件。但我无法访问我的项目

有人能帮我吗

对不起,我的英语不好

控制器amazona.php:

   <?php defined('BASEPATH') OR exit('No direct script access allowed');

class Amazona extends CI_Controller {

    var $bucket = 'cubito';

    function __construct()
    {
        parent::__construct();
        $this->load->library('S3');
    }

    function index()
    {
/*      $data['files'] = $this->s3->getBucket('cubito'); */
        $data['texto'] = "prueba";
        $this->load->view('amazona', $data);
    }
}

?>
<html>
    <head>
        <title>prueba</title>
    </head>

    <body>
        <a href="http://cubito.s3.amazonaws.com/imagen.jpg">imagen</a>
        <img src="http://cubito.s3.amazonaws.com/imagen.jpg" />
        <p><?php echo($texto); ?></p>
        <p><?php echo($this->s3->listBuckets()); ?></p>

    </body>

</html>

我认为您的s3存储桶策略列出存储桶是不正确的。 你的桶政策是什么,你能分享吗

You Need to include the bucket itself as a resource.
"Resource":["arn:aws:s3:::my_bucket/*", "arn:aws:s3:::my_bucket"]
编辑:

尝试以下方法:(这是一个允许IAM用户访问S3的策略)

试试这个:(这是s3 bucket的策略)

我做到了

我更改了s3库中的var$端点。 原件:

public static $endpoint = 's3.amazonaws.com';
变化:

public static $endpoint = 's3-eu-west-1.amazonaws.com';
用我的第一个accesskey和secretkey运行

谢谢大家,很抱歉我的英语不好


谢天谢地

如果我写得正确,或者运行AmazonAWSSDKforPHP的示例代码,就不会有错误消息。如果我更改了任何内容,将显示错误消息。好像所有的代码都没问题,但是库没有连接到S3.Right。但是错误信息是什么?在你的问题中提供尽可能多的细节/细节(不要在评论中)。我想我是诺布。我在尾波中开发,没有发现错误消息。在php代码之前正确加载站点。该网站是:。如果你查看代码,你会宣布代码中断。如果你谈论权限,每个人的“列表”都被授予。我添加了一个bucket策略:{“Version”:“2008-10-17”,“Id”:“Policy1351373775750”,“Statement”:[{“Sid”:“Stmt1351373767997”,“Effect”:“Allow”,“Principal”:{“AWS”:“},“Action”:“s3:”,“Resource”:[“arn:aws:s3:::cubito”,“arn:aws:s3:::cubito/*”]}如果您仍然有问题,请检查我编辑的答案,我将allow ListAllMyBucket添加到您的策略中。Amazon tell me->policy无法解析为有效的JSON字符串。我不知道问题出在哪里。顺便说一句,谢谢。我编辑了您在上次评论中提供的JSON,当我现在尝试时,您的JSON本身有问题,所以我现在就重写它。che再次重复我的回答。
{
  "Id": "Policy1351375661442",
  "Statement": [
    {
      "Sid": "Stmt1351375657362",
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::*",
      "Principal": {
        "AWS": [
          "\"AWS\": \"*\""
        ]
      }
    }
  ]
}
public static $endpoint = 's3.amazonaws.com';
public static $endpoint = 's3-eu-west-1.amazonaws.com';