以为我会问一个问题,因为这让我有点头疼

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

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


检索对象容器文件和URL一切正常。
但是我在上传文件时仍然遇到问题,特别是取决于文件的大小。它曾经在几天前工作过,但最近由于某种原因停止了工作

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

$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


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

谢谢阅读

最佳答案

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


Bug #54439 SSL/OpenSSLbroken
fwrite(): SSL operation failed with code 1. OpenSSL Errormessages:\nerror:1409F07F:SSL routines:SSL3_WRITE_PENDING:bad writeretry INPHP
Why am I getting “error:1409F07F:SSL routines:SSL3_WRITE_PENDING:bad write retry” error while attempting anSSL_write?

10-08 02:21