我想亚马逊的S3文件从运行我的(本地主机)的Windows 8设备连接AppServ 2.5.10
(包括Apache 2.2.8
,php 5.2.6
,mysql 5.0.51b
和phpMyAdmin 2.10.3
)使用Amazon SDK
的PHP.
为了与Amazon SDK's
命名空间功能兼容,我5.3.28
通过下载其压缩文件并解压缩,将php替换为版本.
我的PHP代码可以正常访问S3
文件,Amazon EC2
但在我的Windows本地主机中失败了.
但是当我运行php srcipt来读取Amazon S3
Windows本地主机中的存储桶文件时,我收到了如下SSL错误:
致命错误:未捕获异常'Guzzle\Http\Exception\CurlException',消息'[curl] 60:SSL证书问题:无法获取本地颁发者证书[url] https://images-st.s3.amazonaws.com/us/123977_sale_red_car.png '在C:\ AppServ\www\ecity\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\CurlMulti.php:342堆栈跟踪:
#0 C:\ AppServ\www\ecity\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\CurlMulti.php(283):Guzzle\Http\Curl\CurlMulti-> isCurlException(Object(Guzzle\Http\Message)\Request),Object(Guzzle\Http\Curl\CurlHandle),Array)
#1 C:\ AppServ\www\ecity\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\CurlMulti.php(248):Guzzle\Http\Curl\CurlMulti-> processResponse(Object(Guzzle\Http\Message)\Request),Object(Guzzle\Http\Curl\CurlHandle),Array)
#2 C:\ AppServ\www\ecity\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\CurlMulti.php(231):Guzzle\Http\Curl\CurlMulti-> processMessages()
#3 C:\ AppServ\www\ecity\vendor\guzzle\guzzle\src\Guzzle\Http\Curl\CurlMulti.php(215):Guzzle\Http\Curl\CurlMulti-> executeHandles()
#4 C:用C \的appserv\WWW\ecity\VEN:\的appserv\WWW\ecity \厂商\ AWS\AWS-SDK-PHP中\ SRC\AWS \共同\客户\ AbstractClient.php上线288
我从http://curl.haxx.se/ca/cacert.pem下载证书,并在php.ini中定义如下:
curl.cainfo = "C:\AppServ\cacert.pem"
但我仍然有同样的错误.似乎php不尊重curl.cainfo
定义的php.ini
.
我的php版本是5.3.28
根据的localhost/phpinfo.php
.
我还检查cainfo
参数是否正确C:\AppServ\cacert.pem
使用
echo ini_get( "curl.cainfo" ) ;
在PHP脚本中.
PHP版本高于5.3
应支持curl.cainfo
在php.ini
.
在Windows的命令行中,我检查卷曲行为,它似乎工作正常.
C:\Users\Jordan>curl https://s3-us-west-2.amazonaws.com/images-st/aaa.txt curl: (60) SSL certificate problem: unable to get local issuer certificate ...... C:\Users\Jordan>curl --cacert C:\AppServ\cacert.crt https://s3-us-west-2.amazonaws.com/images-st/aaa.txt This is aaa.txt file. Stored in Amazon S3 bucket.
是因为我在Windows中使用的Apache与5.3.28
我从http://windows.php.net/download/ VC9 x86 Thread Safe(2014年6月11日01:09:56)zip版本下载的php zip文件不匹配.
在我的apache的httpd-ssl.conf文件中,即使我在Windows 8中使用本地主机,我也有以下设置.
DocumentRoot "C:/AppServ/www" ServerName localhost:443 ServerAdmin webmaster@localhost.com ErrorLog "C:/AppServ/Apache2.2/logs/error.log" TransferLog "C:/AppServ/Apache2.2/logs/access.log" SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile "C:/AppServ/Apache2.2/conf/mydomain.cert" SSLCertificateKeyFile "C:/AppServ/Apache2.2/conf/mydomain.key" SSLOptions +StdEnvVars SSLOptions +StdEnvVars BrowserMatch ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "C:/AppServ/Apache2.2/logs/ssl_request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
现在我想知道是什么问题以及如何连接到Amazon S3
存储桶文件和RDS
数据库而不产生这些curl
不能从我的Windows 8本地主机获得本地颁发者证书问题.
有什么建议?