我正在尝试在Xampp中设置Amazon Aws Php SDK。
安装SDK后,我尝试使用以下代码从Amazon S3下载存储桶。
<?php
error_reporting(-1);
ini_set('display_errors', 'on');
include_once ('aws/aws-autoloader.php');
use Aws\S3\S3Client;
$client = S3Client::factory(array(
'key' => '__my__key__',
'secret' => '__secret__key__'
));
$destination = 'downloaded_bucket';
$source_bucket = '__my__bucket__name';
$key_prefix = '';
$options = array('debug'=>true);
$client -> downloadBucket($destination,$source_bucket,$key_prefix,$options);
?>
现在从我的浏览器执行这个php,我收到以下错误。
Notice: Use of undefined constant STDOUT - assumed 'STDOUT' in __my__path\Aws\S3\Sync\AbstractSyncBuilder.php on line 294
STDOUT
Warning: fwrite() expects parameter 1 to be resource, string given in __my__path\Aws\S3\Sync\DownloadSyncBuilder.php on line 124
STDOUT
Warning: fwrite() expects parameter 1 to be resource, string given in __my__path\Aws\S3\Sync\DownloadSyncBuilder.php on line 124
STDOUT
Warning: fwrite() expects parameter 1 to be resource, string given in __my__path\Aws\S3\Sync\DownloadSyncBuilder.php on line 124
最后3个警告是由于第一个通知而发生的,因为不是资源,而是传递字符串'STDOUT'。
首次通知的原因是什么? 此通知的代码段是
if ($this->debug) {
$this->addDebugListener($sync, is_bool($this->debug) ? STDOUT : $this->debug);
}
是SDK的一部分。 而fwrite警告代码的罪魁祸首是addDebugListener函数
protected function addDebugListener(AbstractSync $sync, $resource)
{
//blah blah
fwrite($resource, "Downloading {$from} -> {$to}\n");
//blah blah
}
我的PHP版本是5.4.16
答案 0 :(得分:20)
if(!defined('STDIN')) define('STDIN', fopen('php://stdin', 'r'));
if(!defined('STDOUT')) define('STDOUT', fopen('php://stdout', 'w'));
if(!defined('STDERR')) define('STDERR', fopen('php://stderr', 'w'));
答案 1 :(得分:-2)
您应该在自己的代码中添加以下内容:
define("STDOUT", fopen('log.txt', 'w'));
有关传输文件的信息将记录在文件'log.txt'中。