Php 将Gaufrete流包装器与AsseticBundle一起使用

Php 将Gaufrete流包装器与AsseticBundle一起使用,php,symfony,assetic,gaufrette,Php,Symfony,Assetic,Gaufrette,我试图使用Gaufrete流包装器告诉AssetBundle在哪里转储项目资产,但我无法让它识别它们 这是我的config_dev.yml的knp_gaufrete部分的样子: knp_gaufrette: adapters: dev_adapter: local: directory: /vagrant/test create: true filesystems:

我试图使用Gaufrete流包装器告诉AssetBundle在哪里转储项目资产,但我无法让它识别它们

这是我的config_dev.yml的knp_gaufrete部分的样子:

knp_gaufrette:
    adapters:
        dev_adapter:
            local:
                directory: /vagrant/test
                create: true

    filesystems:
        dev_adapter:
            adapter: dev_adapter

    stream_wrapper: ~
我使用一个简单的操作测试了包装器,以确保它已正确注册,并且工作正常:

public function thanksAction()
{
    file_put_contents('gaufrette://dev_adapter/test.txt', "ABC\n", FILE_APPEND);

    return new Response(file_get_contents('gaufrette://dev_adapter/test.txt'));
}
然后我像这样设置assetic bundle配置(也在config_dev.yml中):

但是,当我尝试使用
控制台assetic:dump--env=dev
转储资产时,出现以下错误:

Dumping all dev assets.
Debug mode is on.

10:53:28 [dir+] gaufrette://dev_adapter/css



  [RuntimeException]                                      
  Unable to create directory gaufrette://dev_adapter/css  



assetic:dump [--watch] [--force] [--period="..."] [write_to]
更多信息:

symfony/symfony:2.5.0
symfony/资产捆绑:2.3.0

knplabs/knp Gaufrete bundle:0.1.7

我在连接AmazonS3流包装器时遇到了相同的问题

我的最终解决方案是注释掉对
mkdir()
的调用,并检查其返回值Assetic的DumpCommand

private function doDump(AssetInterface $asset, OutputInterface $stdout)
{
    // ...

    //if (false === @mkdir($dir, 0777, true)) {
    //    throw new \RuntimeException('Unable to create directory '.$dir);
    //}

    // ...
}
如果您使用的是依赖关系管理器,请将命令复制到新的命令类中,注释掉必要的行

我认为路径中不存在的任何目录/资源都会自动创建

例如: 目录中有一个
assets
文件夹为空。
按下
s3://bucket name/assets/css/style.css
将创建
css
文件夹和
style.css
文件。

您解决了这个问题吗?在我的例子中,它会弹出,因为assetic:dump命令无法创建目录(php中的mkdir()。我正在使用包装器将文件上载到不支持目录的对象存储(OpenStack swift)。目前不知道如何解决此问题:(可能您可以尝试使用
-vvv
选项重新运行相同的命令,以增加错误消息的详细程度。
private function doDump(AssetInterface $asset, OutputInterface $stdout)
{
    // ...

    //if (false === @mkdir($dir, 0777, true)) {
    //    throw new \RuntimeException('Unable to create directory '.$dir);
    //}

    // ...
}