2011-07-17 2 views
2

J'essaye de télécharger une image à un seau S3. Malheureusement, je reçois une erreur étrange et ne trouve rien sur google.cURL faisant des problèmes avec amazon SDK using create_object

$s3 = new AmazonS3(); 
$bucket = 'myBucket'; 
$fileResource = 'test.JPG'; 
$response = $s3->create_object($bucket, $filename, array('fileUpload' => $fileResource)); 
print_r($response); 

Lors de l'exécution du script que je reçois le message suivant:

Fatal error: Uncaught exception 'RequestCore_Exception' with message 'cURL resource: Resource id #20; cURL error: select/poll returned error (55)' in /home/myproject.com/public_html/aws/lib/requestcore/requestcore.class.php:817 Stack trace: #0 /home/myproject.com/public_html/aws/services/s3.class.php(688): RequestCore->send_request() #1 /home/myproject.com/public_html/aws/services/s3.class.php(1286): AmazonS3->authenticate('myBucket', Array) #2 /home/myproject.com/public_html/myScript.php(16): AmazonS3->create_object('myBucket', NULL, Array) #3 {main} thrown in /home/myproject.com/public_html/aws/lib/requestcore/requestcore.class.php on line 817 

Toute idée? cURL fonctionne correctement dans d'autres fichiers.

+0

'55 = Impossible d 'envoyer data.' réseau. Etes-vous sûr que l'URL vers laquelle pointe la boucle est valide? – Wrikken

Répondre

-1

Je pense que ce problème provient d'une ancienne version d'OpenSSL ou de cURL. Un travail autour qui m'a aidé à faire face au problème utilise ceci:

$response = $s3->create_object(
    $bucket, 
    $filename, 
    array(
     'fileUpload' => $fileResource, 
     'curlopts' => array(CURLOPT_FORBID_REUSE => true), 
    ) 
); 

Le drapeau de curlopts raconte l'emballage curl S3 pour ne pas réutiliser les connexions SSL qu'il crée. Une autre solution possible, via https://forums.aws.amazon.com/thread.jspa?threadID=63918, suggère d'utiliser la méthode disable_ssl(), qui était un non-starter pour moi.

1

Essayez

$file_path = 'test.JPG' ; 
$file_resource = @fopen($file_path, 'r'); 

$content_type = CFMimeTypes::get_mimetype('.jpg'); 

$params = array('fileUpload' => $file_resource, 
      'contentType' => $content_type); 

$response = $s3->create_object($bucket_name, $object_name, $params);