2013-07-21 10 views
10

Xampp'de Amazon Aws Php SDK'yı kurmaya çalışıyorum.Uyarı: Tanımlanmamış sabit STDOUT kullanımı - varsayılan 'STDOUT'

SDK'yı yükledikten sonra, aşağıdaki kodu kullanarak Amazon S3'ten bir paket yüklemeye çalışıyorum.

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

Şimdi bu php'yi tarayıcımdan çalıştırırken, aşağıdaki hatayı alıyorum. yerine kaynağın, dize 'STDOUT' geçirilir çünkü

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 

son 3 uyarı, çünkü ilk Bildirimi meydana gelir.

İlk ihbarın sebebi nedir? Bu bildirim için kod kesimi SDK'nin parçasıdır

if ($this->debug) { 
      $this->addDebugListener($sync, is_bool($this->debug) ? STDOUT : $this->debug); 
     } 

olup. Ve fwrite uyarı kodu için suçlu addDebugListener fonksiyonudur

protected function addDebugListener(AbstractSync $sync, $resource) 
    { 
     //blah blah 
     fwrite($resource, "Downloading {$from} -> {$to}\n"); 
     //blah blah 
    } 

My PHP sürümü Sen kendi kodunda, gibi bir şey eklemek gerekir 5.4.16

+0

onun tanımlı değilse hat 124 – DevZer0

+0

içinde bunu olmalıdır eklenmesini değildir başka önyükleme dosyası .. '("STDOUT" define olan bir olduğunu düşünüyorum neyin, STDOUT tanımlamak gerekebilir, "php: // output"); ' – Orangepill

+0

@ DevZer0 Bir yazım çağrısı. Soruyu güncellediniz. – SatheeshJM

cevap

-1

geçerli:

define("STDOUT", fopen('log.txt', 'w')); 

Aktarılan dosyalar hakkında bilgi 'log.txt' dosyasına kaydedilir.

10
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')); 
+2

Bu cevabı kodun ne olduğunu açıklayarak geliştirebilir misiniz? –

+1

Bakınız: http://php.net/manual/en/features.commandline.io-streams.php PHP'nin CLI arabirimi, dosyaya atıfta bulunan sabitler olan "STDIN", "STDOUT" ve "STDERR" terimlerini tanımlar (STDIN) 'den okuma yapabilir veya (STDOUT, STDERR) standart I/O akışlarına yazabilir. Bunlar sadece CLI arabirimi tarafından tanımlandığından, bunları kendiniz tanımlamazsanız bir web uygulamasında kullanamazsınız. Yukarıdaki üç çizgi sadece bunu yapar, ancak sadece tanımlanmış değillerse, güvenli hale getirirler. Gerçekte bir web uygulamasının, onları sabit hale getirmek için onlara sık sık erişmesi gerekmeyebilir. – Mark

+0

uyarısı, FPM bağlamında, STDIN php: // girişi, php: // stdin değil ve STDOUT php: // output, php: // stdout değil (STDERR hala php: // stderr olduğunu düşünüyorum) – hanshenrik