1

如何在使用 S3 SDK 连接 Amazon 中的存储桶时执行 PHP 文件?

我试过了$s3->getBucket,我得到了以下数组。但我需要这个文件的执行结果。

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

)

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

4

3 回答 3

3

您不能直接在 Amazon S3 上执行 PHP 文件。

您需要做的是下载它的内容,将内容写入文件,然后运行文件本身(通过使用 include() 或 require())。

如果文件直接输出内容,则可以将其包装在 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.
于 2012-12-11T08:56:21.640 回答
0

您可能会使用s3fs之类的东西将 S3 存储桶挂载到本地文件系统中,然后像包含任何其他文件一样包含该文件。

于 2012-12-11T17:48:00.813 回答
0

根据 php 上的 allow_url_fopen 和 allow_url_include ini 设置,这可以使用自定义流包装器来实现。我们在我们的一个项目中使用了这样一个东西。无权共享代码,因为它具有知识产权。但它基于http://docs.aws.amazon.com/aws-sdk-php/v2/guide/feature-s3-stream-wrapper.html

Amazon S3 流包装器允许您使用内置 PHP 函数(如 file_get_contents、fopen、复制、重命名、取消链接、mkdir、rmdir 等)从 Amazon S3 存储和检索数据。

于 2015-10-23T02:53:09.270 回答