2013-07-03 2 views
0


Это убивает меня.Я сделали все, но не так, как его все еще не дает мне эту ошибку Fatal error: Uncaught exception 'CFCredentials_Exception' with message 'No credentials were provided. Я пытаюсь загрузить файлы на S3, используя пример AWS sdk 1.6 и загрузить файл загрузки jquery. Я нашел пример на wiki.
Это мой файл, в котором я установил МАНДАТНУЮ awssdk.php из примера викиФатальная ошибка: Uncaught исключение «CFCredentials_Exception» с сообщением «не было предоставлено никаких учетных данных для Amazon S3

require_once 'sdk.class.php'; 
    require_once 'utilities.class.php'; 
    require_once 'credential.class.php'; 
    if (!class_exists('CFCredentials'))require_once('credentials.class.php'); 
    $name=null; 
    CFCredentials::set(array(
    $name => array(
      'key' => 'access key', 
      'secret' => 'secret key', 
      'certificate_authority' => false 
    ), 
    '@default' => $name 
    )); 
    if (!class_exists('S3'))require_once('S3.php'); 
    $s3 = new AmazonS3(); 

Я совершенно уверен, что should't нужно так много файлов, но, как предложили ошибки мне пришлось добавить зависимость classes.But все же я получаю вышеуказанную ошибку. Я также попытался включить файл config.class.php для учетных данных и по-прежнему получил эту ошибку.
Я проводил много времени на этом, и теперь я расстроен этим AWS sdk.
Я немного новичок в OO PHP и, вероятно, поэтому считаю это трудным. Экзамены, пожалуйста, предложите некоторое решение, где я ошибаюсь.

EDIT: Я считаю, что этот класс вызывает проблему, а не уверен, как !!

class CFCredentials 
    { 
/** 
* The key used to specify the default credential set 
*/ 
const DEFAULT_KEY = 'my key'; 

/** 
* The key used to identify inherited credentials 
*/ 
const INHERIT_KEY = 'my secret key'; 

/** 
* Stores the credentials 
*/ 
protected static $credentials = array(); 

/** 
* Prevents this class from being constructed 
*/ 
final private function __construct() {} 

/** 
* Stores the credentials for re-use. 
* 
* @param array $credential_sets (Required) The named credential sets that should be made available to the application. 
* @return void 
*/ 
// private $credential_sets = array('key' => 'xxxxxxxxxxxxxxxxxxxx','secret' => 'xxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxxxx','certificate_authority' => false); 

public static function set(array $credential_sets) 
{ 
    // Make sure a default credential set is specified or can be inferred 
    if (count($credential_sets) === 1) 
    {echo "in count if-->".self::DEFAULT_KEY; 
     $credential_sets[self::DEFAULT_KEY] = reset($credential_sets); 
    } 

    // Resolve any @inherit tags 
    foreach ($credential_sets as $credential_name => &$credential_set) 
    { 
     if (is_array($credential_set)) 
     { 
      foreach ($credential_set as $credential_key => &$credential_value) 
      { 
       if ($credential_key === self::INHERIT_KEY) 
       { 
        if (!isset($credential_sets[$credential_value])) 
        { 
         throw new CFCredentials_Exception('The credential set, "' . $credential_value . '", does not exist and cannot be inherited.'); 
        } 

        $credential_set = array_merge($credential_sets[$credential_value], $credential_set); 
        unset($credential_set[self::INHERIT_KEY]); 
       } 
      } 
     } 
    } 

    // Normalize the value of the @default credential set 
    if (isset($credential_sets[self::DEFAULT_KEY])) 
    { 
     $default = $credential_sets[self::DEFAULT_KEY]; 
     if (is_string($default)) 
     { 
      if (!isset($credential_sets[$default])) 
      { 
       throw new CFCredentials_Exception('The credential set, "' . $default . '", does not exist and cannot be used as the default credential set.'); 
      } 

      $credential_sets[self::DEFAULT_KEY] = $credential_sets[$default]; 
     } 
    } 

    // Store the credentials 
    self::$credentials = $credential_sets; 
} 

/** 
* Retrieves the requested credentials from the internal credential store. 
* 
* @param string $credential_set (Optional) The name of the credential set to retrieve. The default value is set in DEFAULT_KEY. 
* @return stdClass A stdClass object where the properties represent the keys that were provided. 
*/ 

public static function get($credential_name = self::DEFAULT_KEY) 
{ 
    //echo $credential_name; exit; 
    // Make sure the credential set exists 
    if (!isset(self::$credentials[$credential_name])) 
    { 
     throw new CFCredentials_Exception('The credential set, "' . $credential_name . '", does not exist and cannot be retrieved.'); 
    } 

    // Return the credential set as an object 
    return new CFCredential(self::$credentials[$credential_name]); 
} 

/** 
* Retrieves a list of all available credential set names. 
* 
* @return CFArray A list of all available credential set names. 
*/ 
public static function list_sets() 
{ 
    return new CFArray(array_keys(self::$credentials)); 
} 
} 

class CFCredentials_Exception extends Exception {} 

Спасибо

ответ

4

Похоже, что все, что обучающая вы следуете делает это излишне сложным. Попробуйте следующее:

require_once 'sdk.class.php'; 

$s3 = new AmazonS3(array(
    'key' => 'your_aws_access_key_id', 
    'secret' => 'your_aws_secret_key', 
)); 

Вам не нужно требовать каких-либо других файлов.

+0

Спасибо за inputs.Actually Я использую старый SDK, как II нашел tutorial.Actually вопрос, что я должен был поставить правильные значения здесь и исправили проблему '/ ** * Ключ используется для указания набора учетных данных по умолчанию */ const DEFAULT_KEY = 'my key'; /** * Ключ, используемый для идентификации унаследованных учетных данных */ const INHERIT_KEY = 'мой секретный ключ'; 'Теперь я хочу интегрировать плагин с новым SDK. Мне бы хотелось, если вы можете помочь мне с моими дальнейшими вопросами, связанными с новым SDK! :) – KillABug

+1

Несомненно. Самый простой способ привлечь внимание - опубликовать на форуме AWS PHP: https://forums.aws.amazon.com/forum.jspa?forumID=80 –

+0

Я разместил свой вопрос на форуме здесь https: // форумы .aws.amazon.com/message.jspa? MESSAGEID = 465795 # 465795 – KillABug

0
You have set all Credential well but still you have leave one credential 'default_cache_config' => '' 
Just Put it in Credential array with some location for caching the default credential. 
just have a look 


$name=null; 
    CFCredentials::set(array(
     $name => array( 

       'key' => 'access key', 
       'secret' => 'secret key', 
       'default_cache_config' => '/home/user/any location', 
       'certificate_authority' => false 
     ), 
     '@default' => $name 
     ));** 
Смежные вопросы