2011-12-19 9 views
0

Je rencontre une erreur très étrange avec AWS et le SDK PHP. Je suis capable de me connecter à S3 avec mon code PHP et de stocker des objets dans mon seau lorsque j'utilise mon serveur local sur mon ordinateur portable. Je suis également capable de me connecter à S3 sur notre serveur de test/mise en scène. Cependant, sur notre serveur de production, je continue d'obtenir l'erreur suivante lorsque j'essaie de me connecter:erreur PHP CURL avec AWS

ressource cURL: ID de ressource # 8; Erreur cURL: Problème avec le SSL CA cert (chemin? droits d'accès?) (77)

J'ai essayé d'ajouter cette ligne dans le fichier config.inc.php pour AWS SDK, qui était une solution mentionnée dans les forums AWS :

define ('AWS_CERTIFICATE_AUTHORITY', true);

Mais l'erreur persiste toujours. Avez-vous une idée de ce qui ne va pas ou de la façon dont je peux résoudre un problème comme celui-ci?

Voici ce qu'il dit dans l'erreur Apache journal:

A propos de se connecter() à mydb.s3.amazonaws.com port 443 (# 0) * Essayant 223.33.211.223 ... * * connecté Connecté à mydb.s3.amazonaws.com (223.33.211.223) port 443 (# 0) * Initialisation de NSS avec certpath:/etc/pki/nssdb * Impossible d'initialiser la base de données NSS * Erreur NSS -8023 * Fermeture de la connexion # 0 * Problème avec le cert SSL CA (droits d'accès du chemin?)

Cheers!

+0

utilisez-vous le dernier SDK ...? –

+0

Oui, j'utilise PHP SDK 1.5.0 –

Répondre

0

Il s'avère qu'il y avait un problème avec la base de données NSS. Les journaux d'erreur apache ont été à l'affiche:

Initializing NSS avec certpath:/etc/pki/nssdb * Impossible d'initialiser la base de données NSS * NSS d'erreur -8023

Après la génération d'une nouvelle base de données NSS et re-départ Apache, le problème a été résolu.

5

Dans le code lui-même, nous pouvons ajouter la ligne suivante pour éviter l'erreur fatale à des fins de test.

error_reporting(E_WARNING); 

$s3 = new AmazonS3(); 
$s3->disable_ssl(); 
$s3->disable_ssl_verification(); 

Sinon, nous ajouterons la ligne suivante dans notre fichier php.ini à la fin du certificat SSL.

[PHP] 
curl.cainfo = "C:\xampp\htdocs\aws\sdk\lib\requestcore\cacert.pem" 
+0

Mon nom de compartiment contient des points et cette information m'a aidé à utiliser '$ s3-> list_objects()'. JE VOUS REMERCIE! – Tom