我在 Windows 系统上安装了 php5 并尝试使用命令行控制台执行以下脚本:
<?php
// load in credentials
$creds = parse_ini_file('/etc/aws.conf');
// Define query string keys/values
$params = array(
'Action' => 'DescribeAvailabilityZones',
'AWSAccessKeyId' => $creds['access_key'],
'Timestamp' => gmdate('Y-m-d\TH:i:s\Z'),
'Version' => '2008-05-05',
'ZoneName.0' => 'us-east-1a',
'ZoneName.1' => 'us-east-1b',
'ZoneName.2' => 'us-east-1c',
'SignatureVersion' => 2,
'SignatureMethod' => 'HmacSHA256'
);
uksort($params, 'strnatcmp');
$qstr = '';
foreach ($params as $key => $val) {
$qstr .= "&{$key}=".rawurlencode($val);
}
$qstr = substr($qstr, 1);
// Signature Version 2
$str = "GET\n"
. "ec2.amazonaws.com\n"
. "/\n"
. $qstr;
// Generate base64-encoded RFC 2104-compliant HMAC-SHA256
// signature with Secret Key using PHP 5's native
// hash_hmac function.
$params['Signature'] = base64_encode(
hash_hmac('sha256', $str, $creds['secret_key'], true)
);
// simple GET request to EC2 Query API with regular URL
// encoded query string
$req = 'https://ec2.amazonaws.com/?' . http_build_query(
$params
);
$result = file_get_contents($req);
// do something with the XML response
echo $result;
但它说无法找到包装器“https”,并询问我是否在配置 PHP 时忘记启用它。
问题是什么以及如何解决?
1:检查安装了哪些包装器。
<?php var_dump(stream_get_wrappers()); ?>
2:如果您在列表中没有看到“https”,请添加到 php.ini 或从 php.ini 中取消注释
extension=php_openssl.dll
重新启动您的服务器*,您就完成了。
*如果服务器无法重新启动,请从某个地方下载 php_openssl.dll 并将其粘贴到 php.ini 文件中定义的扩展目录中,重新启动服务器,说几句地狱玛丽的话并祈祷。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)