2014-04-01 5 views
6

내 앱용 S3 플러그인을 만들고 있습니다. app/Plugin/S3/Controller/Component/S3Component.php에서 나는이있다 : 내 응용 프로그램의 컨트롤러에서AWS SDK를 CakePHP에로드하는 방법은 무엇입니까?

<?php 

App::import('Vendor', 'aws/aws-autoloader'); 

use Aws\S3\S3Client; 

class S3Component extends Component { 

    public function loadS3() { 
     $s3 = S3Client::factory(array(
      'key' => '', 
      'secret' => '' 
     )); 
     return $s3; 
    } 

} 

을, 나는 $s3 = $this->S3->loadS3();

그것은 Error: Class 'Aws\S3\S3Client' not found

내가 줄을 추가 시도 오류가 발생합니다 사용하여 전화 : App::uses('Vendor', 'aws/Aws/S3/S3Client');를 구성 요소 클래스를 제거 use Aws\S3\S3Client;. 내가 참조하여 S3 객체를로드하고있어 app/Plugin/S3/Vendor/aws

폴더에 Error: Class 'S3Client' not found

AWS SDK를 보여줍니다 http://docs.aws.amazon.com/aws-sdk-php/guide/latest/quick-start.html#factory-method

솔루션 :

내 구성 요소처럼 보이는 방법이있다 지금 @akirk의 도움으로.

<?php 

ini_set('include_path', ROOT . DS . 'lib' . PATH_SEPARATOR . ini_get('include_path'). PATH_SEPARATOR . ROOT .DS . 'app/Plugin/S3/Vendor/aws'); 

require ROOT . DS . 'app/Plugin/S3/Vendor/aws/aws-autoloader.php'; 

use Aws\S3\S3Client; 

class S3Component extends Component { 

    public function loadS3() { 
     $s3 = S3Client::factory(array(
      'key' => '', 
      'secret' => '' 
     )); 
     return $s3; 
    } 

} 
+0

고마워요! 이게 내가 찾고있는거야 :) – decodingpanda

+0

나는 똑같은 문제에 직면 해있다. 위의 솔루션이 나를 위해 작동하지 않습니다 .. 동일한 폴더 구조를 사용하고 있습니다. 그리고 https://github.com/Ali1/cakephp-amazon-aws-sdk 을 따라 다니면 옳은지 아닌지 말할 수 있습니까? – urfusion

+0

버전 문제입니다. SDK V3을 사용 중입니다. – urfusion

답변

1

분명히 자동 가져 오기가 작동하지 않습니다. 당신은 튜토리얼로 할 CakePHP의 감동해서는 안 자동 로딩 메커니즘으로 require

require 'vendor/autoload.php'; 

를 사용해야합니다.

관련 문제