如何使用Amazon S3 SDK在一个桶中下载并执行php文件?

cnh2zyt3  于 2023-02-28  发布在  PHP
关注(0)|答案(3)|浏览(171)

如何在使用S3 SDK连接Amazon中的bucket时执行PHP文件?
我试着用$s3->getBucket,我得到了下面的数组。但是我需要这个文件的执行结果。

Array
(
    [content/content.php] => Array
        (
            [name] => content/content.php
            [time] => 1353105202
            [size] => 1223
            [hash] => 355c51389b51814d4b6c822a6ec28cfe
        )

)

是否有任何函数/方法来执行PHP文件?

pkwftd7m

pkwftd7m1#

您不能直接在Amazon S3上执行PHP文件。
您需要做的是下载它的内容,将内容写入文件,然后运行文件本身(通过使用include()或require())。
如果文件直接输出内容,可以将其 Package 在ob_start()和ob_get_clean()中以获得任何输出。

$source = $s3->getObject($bucket, $object);

$filename = tempnam('/tmp');
$file = fopen($filename, 'w');
fwrite($file, $source);
fclose($file);

ob_start();
require_once $filename;
$result = ob_get_clean();

echo $result; // the result of the executed PHP.
wwtsj6pe

wwtsj6pe2#

您可能会使用类似s3fs的东西在本地文件系统中挂载S3 bucket,然后像包含任何其他文件一样包含该文件。

k97glaaz

k97glaaz3#

根据php上的allow_url_fopen和allow_url_include ini设置,这可以使用自定义流 Package 器来实现。我们在自己的项目中使用了一个这样的东西。没有授权共享代码,因为它有知识产权。但它基于http://docs.aws.amazon.com/aws-sdk-php/v2/guide/feature-s3-stream-wrapper.html
Amazon S3流 Package 器允许您使用内置的PHP函数(如file_get_contents、fopen、copy、rename、unlink、mkdir、rmdir等)存储和检索Amazon S3中的数据。

相关问题