Php 如何从s3加载细枝文件?

Php 如何从s3加载细枝文件?,php,amazon-s3,twig,cdn,Php,Amazon S3,Twig,Cdn,正在尝试从s3加载细枝模板文件 $themePath = "https://path/to/s3/file"; require_once APPLICATION_PATH.'/../library/Twig/Autoloader.php'; Twig_Autoloader::register(); $loader = new Twig_Loader_Filesystem($themePath); $this->appTwig = new Tw

正在尝试从s3加载细枝模板文件

    $themePath = "https://path/to/s3/file";
    require_once APPLICATION_PATH.'/../library/Twig/Autoloader.php';
    Twig_Autoloader::register();



    $loader = new Twig_Loader_Filesystem($themePath);

    $this->appTwig = new Twig_Environment($loader, array(
     //   'cache' => APPLICATION_PATH.'/../cache',
    ));
    $this->view->appTwig = $this->appTwig;

      $this->template = $this->appTwig->loadTemplate($this->appView.'.yo');
      echo $this->template->render(array();
当我试图加载一个模板文件时,我得到一个异常,它说“目录不存在”


基本上,我想将所有的细枝文件存储在s3上,这样就可以从我的任何服务器访问它们。我不知道该怎么做。看起来Twig需要在本地机器上有一个目录作为文件系统。请帮忙

Symfony2是否编译了细枝模板并缓存了结果?如果它像我认为的那样工作,我看不出这有什么好处。理想情况下,只有在重建缓存时才使用细枝模板,因此您并没有真正从CDN中获益。好处是文件可以存储(和编辑)在中心位置,然后“提供服务”实际上,我在s3上使用file_get_内容加载到文件中,然后从一个带有$twig=new twig_Environment(new twig_Loader_string())的字符串加载细枝模板;使用ACE编辑器直接在S3上编辑文件好的,但是当你说它们被“送达”时,你是说*.twig文件被直接送达了吗?这是没有意义的,因为从技术上讲,您不希望通过HTTP访问您的细枝文件(这就是默认情况下它们不在web根目录中的原因)。或者,您的意思是,通过您的Sf2应用程序将它们提供给多个负载平衡的服务器,并且这些服务器会相应地更新其缓存?当您更改细枝文件时,如何在服务器上触发缓存更新?我在s3中有细枝文件。我的应用程序获取细枝文件的内容(通过http),然后根据字符串创建细枝环境。实际上,我使用的是Zend应用程序而不是SF2,所以我只在缓存过期或树枝文件更新(从我内置到应用程序的编辑器)时才获取s3上文件的内容。通过这种方式,用户可以使用在我的应用程序中运行的细枝来编写自己的“应用程序”,方法是创建细枝文件,然后由我的应用程序传递数据。由于文件位于s3中,我可以设置一个bucket策略,只有我的服务器才能访问它们。默认情况下,细枝文件位于web根目录之外。从理论上讲,您可能会无意中在细枝文件中透露有关应用程序逻辑的详细信息(就像在任何其他.php文件中一样,只是它们将作为纯文本使用)。这不是一个大的风险,只要你的配置文件与密码是不可访问的。我觉得让用户编辑细枝文件(跨站点脚本和其他注入)的风险更大。但我相信这取决于很多因素。然而,需要注意的是。祝你好运