0


これは私を殺している.私はすべてをやったが、まだこのエラーを出していないので正しくない Fatal error: Uncaught exception 'CFCredentials_Exception' with message 'No credentials were provided. AWS sdk 1.6 の例と jquery ファイル アップロード プラグインを使用して S3 にファイルをアップロードしようとしています。wiki で例を見つけまし。 これは、wiki の例から
認証情報を設定する私のファイルですawssdk.php

  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();   

それほど多くのファイルは必要ないと確信していますが、エラーが示唆しているように、依存関係クラスを追加する必要がありましたが、それでも上記のエラーが発生します。config.class.php 資格情報用のファイルも含めようとしましたが、それでもこのエラーが発生しました。
私はこれに多くの時間を費やしてきましたが、今ではこの AWS SDK に不満を感じています。
私はOO PHPに少し慣れていないため、おそらく難しいと感じています。専門家は、私が間違っている場所の解決策を提案してください。

編集:このクラスが問題を引き起こしていると思いますが、どうすればよいかわかりません!!

   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

2 に答える 2

4

あなたがフォローしているチュートリアルが何であれ、これを不必要に難しくしているようです。これを試して:

require_once 'sdk.class.php';

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

他のファイルを必要とする必要はありません。

于 2013-07-03T15:50:01.917 に答える
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
        ));**
于 2013-10-25T05:56:14.453 に答える