PHP Softlayer对象存储上载SSL错误

时间:2016-05-06 09:25:12

标签: php ssl upload ibm-cloud-infrastructure object-storage

以为我会提出一个问题,因为这让我头疼不已

我有一个PHP应用程序,可以将文件上传到SoftLayer对象存储容器中。 要与Object Storage API通信,我使用的是PHP绑定 https://github.com/softlayer/softlayer-object-storage-php 并从我的composer.json文件中引用它们

    "softlayer/objectstorage": "dev-master",

检索对象容器文件和网址工作正常。 但我仍然遇到上传文件的问题,特别是取决于他们的大小。它曾经在几天前工作,但有些原因最近停止了工作

这是开箱即用的'开箱即用的'我用来上传文件的代码:

$options = array('adapter' => ObjectStorage_Http_Client::SOCKET, 'timeout' => 10);
$objStorage = new ObjectStorage('', '', '', $options);

try {
   $newFile = $objStorage->with('RemoteFilePath')
                   ->setLocalFile($PathTolocalFile)
                   ->create();

   return $newFile->getUrl();
}
catch (Exception $e) {
   return $e->getMessage();
}

出于某种原因,上传1Mb以下的文件是有效的。但是任何大小超过此值的文件, - > create()请求最终会超时,不会抛出任何异常,并且我在日志中不断收到这些错误:

xxx.xxx.xxx.xx - [05/06/16 03:47:02] Warning: fwrite(): SSL operation failed with code 1. OpenSSL Error messages:
error:1409F07F:SSL routines:SSL3_WRITE_PENDING:bad write retry (/var/www/vendor/softlayer/objectstorage/lib/ObjectStorage/Http/Adapter/Socket.php:132)

由于这些绑定本质上是一个包装圆形卷曲,然后我自己用CURL测试,看看我是否可以将大于1M的文件上传到Softlayer Storage Container。事实证明,在我的开发机器和登台服务器上使用CURL成功了!

curl -i -XPUT -H "X-Auth-Token: {{MyAuthToken}}" --data-binary "@BigFile.txt" https://lon02.objectstorage.softlayer.net/v1/{{MyAuthTokenKey}}/{{MyContainer}}/BigFile.txt

你有遇到这个吗?我不明白为什么它突然停止工作。 有人有什么想法吗?

感谢您阅读

1 个答案:

答案 0 :(得分:1)

我无法重现您的问题,我可以使用您的代码上传超过2 MB的文件。 无论如何,您遇到的问题与SSL / OpenSSL有关,请查看以下链接以获取有关它的更多信息以及如何解决它: