DS9*_*DS9 5 php amazon-ec2 yii amazon-web-services aws-sdk
我已将策略附加到EC2 IAM角色以访问AWS服务.之后我在Yii 1控制器文件中使用了以下代码:
ExampleController.php
class ExampleController extends Controller
{
public function init()
{
require_once dirname(dirname(__FILE__)) . '/extensions/awsv3/vendor/autoload.php';
$config = array(
'version' => 'latest',
'region' => 'us-west-2',
);
$s3_instance = new \Aws\Ssm\SsmClient($config);
$result = $s3_instance->getParameters([
'Names' => array('host_name'),
'WithDecryption' => true
]);
//converting S3 private data to array to read
$keys = $result->toArray();
var_dump($keys);
exit("Exit");
}
}
Run Code Online (Sandbox Code Playgroud)
产量
PHP警告
包括(TestRole.php):无法打开流:没有这样的文件或目录
注意:TestRole是IAM角色名称.
我在单个PHP文件中使用了相同的代码(与Yii1不相关)
test.php的
require_once 'protected/extensions/awsv3/vendor/autoload.php';
$config = array(
'version' => 'latest',
'region' => 'us-west-2',
);
$s3_instance = new \Aws\Ssm\SsmClient($config);
$result = $s3_instance->getParameters([
'Names' => array('host_name'),
'WithDecryption' => true
]);
//converting S3 private data to array to read
$keys = $result->toArray();
var_dump($keys);
exit("Exit");
Run Code Online (Sandbox Code Playgroud)
array(3){["Parameters"] => array(1){[0] => array(3){["Name"] => string(12)"host_name"["Type"] => string( 6)"String"["Value"] => string(9)"localhost"}} ["InvalidParameters"] => array(0){} ["@metadata"] => array(4){["statusCode "] => int(200)["effectiveUri"] => string(35)" https://ssm.us-west-2.amazonaws.com "["headers"] => array(4){[" x-amzn-requestid"] => string(36)"d3fb85bc-da4e-494b-be4f-b31fe3814100"["content-type"] => string(26)"application/x-amz-json-1.1"[" content-length"] => string(3)"182"["date"] => string(29)"星期二,2018年6月19日12:28:50 GMT"} ["transferStats"] => array(1) {["http"] => array(1){[0] => array(0){}}}}}退出
它使用单个php文件.
所以问题是如何在Yii 1中修复它以及为什么它将IAM Role Name视为类文件?
感谢@javierfdezg,我能够解决这个问题。
所以基本上,Yii 的自动加载器和 AWS 的自动加载器发生了冲突,可能是由于 Yii 假设类名必须与文件名匹配。
所以首先我取消注册了 Yii 的自动加载,然后在 api 调用完成后再次注册它。
class ExampleController extends Controller
{
public function init()
{
/* Unregister YiiBase */
spl_autoload_unregister(array('YiiBase', 'autoload'));
require_once dirname(dirname(__FILE__)) . '/extensions/awsv3/vendor/autoload.php';
$config = array(
'version' => 'latest',
'region' => 'us-west-2',
);
$s3_instance = new \Aws\Ssm\SsmClient($config);
$result = $s3_instance->getParameters([
'Names' => array('host_name'),
'WithDecryption' => true
]);
/* Register YiiBase */
spl_autoload_register(array('YiiBase', 'autoload'));
$keys = $result->toArray();
var_dump($keys);
exit("Exit");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |