我的PHP应用程序动态生成一些脚本文件,然后使用require或include运行这些脚本文件。
我现在正在将我的生产服务器迁移到,以实现扩展和负载平衡。这意味着生成的脚本文件不应该再存储在本地文件系统中,而应该存储在S3桶中。
因此,我希望使用Flysystem,这样我就不必考虑文件是存储在本地(开发)还是存储在S3桶(生产)中。
但是如何从Flysystem中require或include文件呢?我必须得到文件内容然后eval吗?
发布于 2017-08-01 06:31:25
不可能直接从Flysystem include或require文件。解决方法是获取文件的内容并对其进行eval。请注意,您必须处理<?php文件中的任何前导?>标记和尾随eval标记。
发布于 2017-06-08 13:21:40
本地存储:
use League\Flysystem\Filesystem;
use League\Flysystem\Adapter\Local;
$adapter = new Local(__DIR__.'/path/to/root');
$localFilesystem = new Filesystem($adapter);S3存储:
use Aws\S3\S3Client;
use League\Flysystem\AwsS3v3\AwsS3Adapter;
use League\Flysystem\Filesystem;
$client = S3Client::factory([
'credentials' => [
'key' => 'your-key',
'secret' => 'your-secret',
],
'region' => 'your-region',
'version' => 'latest|version',
]);
$adapter = new AwsS3Adapter($client, 'your-bucket-name', 'optional/path/prefix');
$s3Filesystem = new Filesystem($adapter);然后,用一个打开您的文件,然后写信给另一个:
$contents = $localFilesystem->read('path/to/file.txt');
$s3Filesystem->write('path/to/file.txt', $contents);您不需要要求、包括或评估任何东西!希望这能有所帮助!
https://stackoverflow.com/questions/44436784
复制相似问题