0
我在一個目錄中有一個全局頭文件,用於檢查用戶是否擁有正確的憑證,並要求/包含重要的類。每個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 Client類,但它不起作用。如果我將上面的代碼複製出頭文件並將其放在相關的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