8

我正在尝试使用 Gaufrette Stream Wrapper 来告诉 AsseticBundle 在哪里转储项目资产,但我无法让它识别它们。

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

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'));
}

然后我像这样设置资产包配置(也在 config_dev.yml 中):

assetic:
    read_from: gaufrette://dev_adapter
    write_to: gaufrette://dev_adapter

但是,当我尝试使用转储资产时console 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/assetic-bundle:2.3.0
knplabs/knp-gaufrette-bundle:0.1.7

4

1 回答 1

0

我在连接 Amazon S3 流包装器时遇到了同样的问题。

我的最终解决方案是注释掉调用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文件。

于 2014-09-13T20:12:30.003 回答