我正在尝试使用亚马逊提供的s3 sdk将图像保存到亚马逊的S3云服务中。代码实际上很直接,这是我的代码中的调用:
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服务器上运行代码时,一切正常。当我将它移动到远程Web服务器,运行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
谷歌告诉我,错误(55)是一个网络错误。我知道curl工作正常,因为我有其他运行的php项目使用curl就好了。我认为,如果我在我的扩展目录中有php-curl.so一切都会工作,(除了它被加载两次的警告)但是php-common附带它已经打包在一起。
我真的不知道还有什么可以尝试,因为它在本地工作,而不是在linux机器上。我一直试图通过亚马逊提供的sdk来查看它是否试图以某种奇怪的方式调用php-curl,但我还没有运气。
任何想法都将不胜感激!
答案 0 :(得分:2)
我也收到了这个错误。在使用get_object而不是create_object进行一些检查后,我得到了消息请求时间与当前时间之间的差异太大。来自S3。服务器时间提前了20分钟。设置正确的时间get_object和create_object正确工作后
答案 1 :(得分:1)
您可以通过运行兼容性测试来检查curl版本。所以它应该不是问题。我看到另一个线程建议禁用ssl或将ssl证书导入你的porgram
答案 2 :(得分:0)
谷歌上的一些时间让我感到this question on AWS' support forums,其中一位亚马逊技术人员提到一些卷曲版本被描述为错误。检查curl_version
的输出,也许你正在使用其中一个可能有错误的版本。