2014-01-14 1 views
3

Я пытаюсь проверить в PHP Amazon S3 на моем localhost на Ubuntu системе, но получаю ту же ошибку:Amazon Web Service S3 показывает SSL Curl ошибку

S3::listBuckets(): [35] error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

Это функция для отображения списка ведра.

public function buckets() { 
      $s3 = $this->getInstance(); 
/*print_r($this->_s3->listBuckets()); nothing is print else shows error */ 
      return $this->_s3->listBuckets(); 


     } 

Здесь представлена ​​функция API Amazon, которая была вызвана этой функцией.

public static function listBuckets($detailed = false) { 
     $rest = new S3Request('GET', '', ''); 
     $rest = $rest->getResponse(); 
     if ($rest->error === false && $rest->code !== 200) 
      $rest->error = array('code' => $rest->code, 'message' => 'Unexpected HTTP status'); 
     if ($rest->error !== false) { 
      trigger_error(sprintf("S3::listBuckets(): [%s] %s", $rest->error['code'], $rest->error['message']), E_USER_WARNING); 
      return false; 
     } 
     $results = array(); 
     if (!isset($rest->body->Buckets)) 
      return $results; 

     if ($detailed) { 
      if (isset($rest->body->Owner, $rest->body->Owner->ID, $rest->body->Owner->DisplayName)) 
       $results['owner'] = array(
        'id' => (string) $rest->body->Owner->ID, 'name' => (string) $rest->body->Owner->ID 
       ); 
      $results['buckets'] = array(); 
      foreach ($rest->body->Buckets->Bucket as $b) 
       $results['buckets'][] = array(
        'name' => (string) $b->Name, 'time' => strtotime((string) $b->CreationDate) 
       ); 
     } 
     else 
      foreach ($rest->body->Buckets->Bucket as $b) 
       $results[] = (string) $b->Name; 

     return $results; 
    } 
+0

Обычно это происходит, если удаленный сервер не говорит на SSL. –

+0

Он отлично работает на другом сервере. –

+0

Ваш 'cURL' не был скомпилирован с поддержкой для выполнения запросов SSL. Перекомпилируйте, используя правильные двоичные файлы. – Ohgodwhy

ответ

1

Наиболее распространенная ошибка при интеграции AWS S3 на localhost.

  1. Check is cURL включен и открыт SSL также активен.
  2. Получить файл с http://curl.haxx.se/ca/cacert.pem и сохранить его в своих библиотеках на жестком диске. Переименуйте его cacert.pem.
  3. Настроить curl.cainfo в php.ini с полным путем к файлу, загруженному на этапе 2.
  4. Перезапустите Apache.

Будет работать отлично.

+2

Проблема, как правило, возникает из-за обновления PHP 5.2 до 5.5 –

+0

не работает для меня, я сумасшедший – cikatomo

3

Кажется, что вы изменили вашу версию PHP, поскольку эта ошибка произошла несколько раз в PHP 5.4, но она отлично работает в предыдущих версиях. Вы можете снова установить cURL с Open SSL.

+0

действительно нужно сохранить другие библиотеки. Я нашел это решение через год :) –

Смежные вопросы