【发布时间】:2016-10-13 06:34:35
【问题描述】:
我在一个目录中有一个全局头文件,用于检查用户是否拥有正确的凭据,并要求/包含重要的类。每个 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 客户端类,但它不起作用。如果我将上述代码从头文件中复制出来并将其放在本地相关的 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 客户端凭据。谢谢。
【问题讨论】:
-
您需要定义“不起作用”。什么错误?
-
putObject 函数根本不触发。但是,如果我将顶部的代码从标头中复制到本地文件中,它会突然起作用。
-
那么您的文件没有被包含在内。请参阅下面的答案,也许您需要使用
require来确保它发生。
标签: php amazon-web-services amazon-s3 header phar