私は、正しい資格情報を持っていることを確認するために使用するディレクトリにグローバルヘッダーファイルを持っています。すべてのPHPページにこのヘッダーファイルが含まれています。S3クライアントを使用するPHPのグローバルヘッダー
//Connect to Amazon AWS - Include Amazon AWS SDK - Using PHAR Method
require_once($_SERVER['DOCUMENT_ROOT'] . 'php/aws.phar');
// Instantiate the S3 client with hardcoded AWS credentials
$s3Client = new Aws\S3\S3Client([
'version' => 'latest',
'region' => 'us-east-1',
'credentials' => [
'key' => 'MY-KEY',
'secret' => 'MY-SECRET',
],
]);
MY-KEYとMY-SECRETは正しいです。
上記のS3クライアントクラスをWebページ全体で使用しようとしていますが、動作しません。上記のコードをヘッダファイルからコピーし、それを関連するPHPドキュメント内にローカルに置くだけで動作するようです。
私が現在作業しているドキュメントは、HTTP POSTでアクションを実行するフォームです。
//Include connection details and check valid credentials
include_once '../php/header.php';
...
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
//Use Amazon S3 Client to upload the file
.... //IF THE HEADER CODE IS INSERTED HERE THE CODE WORKS
$result = $s3Client->putObject(array(
'Bucket' => 'MY-BUCKET',
'Key' => $filepath,
'SourceFile' => $_FILES["file"]["tmp_name"]
));
}
誰でも私のヘッダー設定が機能していない理由を説明できます。私はS3クライアントの資格情報を複製したくありません。ありがとう。
「動作しません」と定義する必要があります。エラーは何ですか? – jszobody
putObject関数はまったくトリガーしません。しかし、ヘッダーの先頭のコードをローカルにファイルにコピーすると、突然動作します。 – WelshJohn
あなたのファイルは含まれていません。以下の答えを見てください。恐らくそれが起こることを保証するために 'require'を使う必要があります。 – jszobody