2011-03-24 6 views
2

amazon에서 제공하는 s3 sdk를 사용하여 아마존의 S3 클라우드 서비스에 이미지를 저장하려고합니다. 코드는 실제로 매우 직선입니다. 이것은 내 코드의 호출입니다.Amazon S3 PHP 이미지 저장 curl 오류

include_once "s3/sdk.class.php"; 

$s3 = new AmazonS3(); 
$file = $_FILES['userfile']['tmp_name']; 
$name = $netid . "_splash.png";   
$bucket = 'gw_splash';   

$response = $s3->create_object($bucket, $name, array(
'fileUpload' => $file)); 

그러나이 호출이 문제라고 생각하지 않습니다. 로컬 WAMP 서버에서 코드를 실행하면 모든 것이 잘 동작합니다. 내가 원격 웹 서버로 옮겨서 문제가되는 php5.2와 centOS 5.5를 돌린다. 로그에 다음과 같은 오류가 표시됩니다.

[Thu Mar 24 11:38:57 2011] [error] [client 204.11.231.186] PHP Fatal error: Uncaught exception 'RequestCore_Exception' with message 'cURL resource: Resource id #61; 
cURL error: select/poll returned error (55)' in /var/www/admin/system/application/controllers/s3/lib/requestcore/requestcore.class.php:795\nStack trace:\n#0 /var/www/admin/system/application/controllers/s3/services/s3.class.php(703): 
RequestCore->send_request()\n#1 /var/www/admin/system/application/controllers/s3/services/s3.class.php(1196): 
AmazonS3->authenticate('gw_splash', Array)\n#2 /var/www/admin/system/application/controllers/appdetails.php(224): AmazonS3->create_object('gw_splash', '22182_splash.pn...', Array)\n#3 [internal function]: 
Appdetails->do_upload()\n#4 /var/www/admin/system/codeigniter/CodeIgniter.php(236): call_user_func_array(Array, Array)\n#5 /var/www/admin/index.php(115): 
require_once('/var/www/admin/...')\n#6 {main}\n thrown in /var/www/admin/system/application/controllers/s3/lib/requestcore/requestcore.class.php on line 795, referer: 
http://admin.isites.us/appdetails/?netid=22182&appType=1&appId=62981 

Google에서 오류 (55)가 네트워크 오류임을 알립니다. curl이 잘 작동하는 다른 PHP 프로젝트를 실행하고 있으므로 잘 작동하는 것을 알 수 있습니다. 내 확장 디렉토리에 php-curl.so가 있으면 모든 것이 작동 할 것이라고 생각하지만 (php-common은 이미 두 번로드되었다는 경고 외에도) php-common은 이미 패키지되어 있습니다.

정말 리눅스 머신이 아니라 로컬에서 작업하기 때문에 다른 어떤 시도를하지 못했습니다. 나는 amazon이 제공 한 SDK를 통해 PHP 컬을 호출하려고 시도했는지 알기 위해 노력했지만, 아직 운이 없었습니다.

모든 아이디어를 높이 평가하겠습니다!

답변

0

Google에서 약간의 시간을내어 this question on AWS' support forums으로 안내했습니다. 아마존 기술자는 일부 컬 버전이 버그라고 설명했습니다. curl_version의 출력을 확인하십시오. 아마도 버그가있는 버전 중 하나를 사용하고있을 것입니다.

1

호환성 테스트를 실행하여 컬 버전을 확인할 수 있습니다. 그래서 그것은 문제가되어서는 안됩니다. 다른 스레드에서 ssl 사용 안 함을 제안하거나 ssl 인증서를 사용자 porgram으로 가져 오는 것을 보았습니다.

2

이 오류가 나타납니다. create_object 대신 get_object를 사용하여 확인한 후 메시지가 나타납니다. 요청 시간과 현재 시간의 차이가 너무 큽니다. S3의 서버 시간은 20 분 전이었습니다. 올바른 시간을 설정 한 후 get_object와 create_object가 올바르게 작동했습니다.