我正在使用s3-PHP5-curl来访问我的AWS S3存储桶。
getBucket()函数工作正常,当我自己托pipePHP应用程序时检索结果,但是当我将完全相同的代码放入AWS EC2实例(默认aim – Linux,Apache,PHP)时,出现以下错误:
Warning: S3::getBucket(): [51] Unable to communicate securely with peer: requested domain name does not match the server's certificate. In /var/www/html/s3-PHP5-curl/S3.PHP on line 136 Warning: Invalid argument supplied for foreach() in /var/www/html/index.PHP on line 15
我无法理解它。 这是什么意思,我该如何解决呢?
当我在我的amazon ec2微型实例中遇到“MysqLd dead,subsys locked”时该怎么办?
在远程服务器的后台运行mvn exec
无法将Wsgi脚本作为python模块加载 – 500内部服务器错误
在ec2上安装Python uwsgi
编辑:我确实标记为答案,但我错了。 无论您使用Amazon SDK还是PHP5-curl库,我都链接到底层问题似乎是什么。 似乎有一个普遍的问题影响了一些地区的EC2用户,他们尝试以程序的方式访问他们的存储桶名称包括一站式(又名期间)的SSLauthentication的S3存储桶。 它已被logging,但在这里没有解决。
瘦服务器不能在Amazon Ec2上的生产模式(实时)上工作
在用户数据中发送PowerShell脚本到Windows ec2
jenkins从事EC2失败的Windows Server 2016
如何SSH和sftp进入弹性加载balacer背后没有弹性IP地址的ec2
如何解决亚马逊EC2 Linux上的httpd冲突?
尝试使用适用于PHP 1.5.5的AWS开发工具包,并确保指定您的区域并将path_style设置为true。 对我来说,我在新加坡,所以我的代码是:
$s3 = new AmazonS3(); $s3->set_region(AmazonS3::REGION_APAC_SE1); $s3->path_style = true;
这似乎为我工作。
希望能帮助到你!
干杯,阿尔迪
Unable to communicate securely with peer: requested domain name does not match the server's certificate.
当CURL尝试验证证书时发生此错误。 虽然可以使用卷曲选项禁用此设置,但为什么证书名称不匹配存在。
它看起来像你的图书馆有点过时,你可能要考虑使用这个: http : //aws.amazon.com/sdkforPHP/
您可以通过编辑s3-PHP5-curl/S3.PHP改变行1298-1299来始终指示CURL不检查有效的SSL证书:
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false); curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
这对于xzs3.amazonaws.com类型的存储桶来说是必需的,正如上面注释中的datasage所指出的,* .s3.amazonaws.com的通配符SSL证书不包括这些。