首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >资产-无法写入资产

资产-无法写入资产
EN

Stack Overflow用户
提问于 2013-01-26 15:23:46
回答 1查看 2.9K关注 0票数 10

下面是我的目录结构(这只是一个测试项目):

代码语言:javascript
复制
stan@mypc:/generate_assets$ sudo tree -L 3 -p
.
├── [drwxr-xr-x]  assets
│   └── [drwxr-xr-x]  css
│       ├── [-rw-r--r--]  test1.css
│       └── [-rw-r--r--]  test2.css
├── [-rw-r--r--]  composer.json
├── [-rw-r--r--]  composer.lock
├── [drwxrwxrwx]  public
├── [-rwxr-xr-x]  run
└── [drwxr-xr-x]  vendor
     ....skipping...

下面是我应该生成资产的简单脚本(“run”文件):

代码语言:javascript
复制
#!/usr/bin/env php

<?php
    //loading composer's autoload
    chdir(__DIR__);
    if (file_exists('vendor/autoload.php')) {
        include 'vendor/autoload.php';
    }

    use Assetic\Asset\AssetCollection;
    use Assetic\Factory\AssetFactory;
    use Assetic\Asset\FileAsset;
    use Assetic\Asset\GlobAsset;
    use Assetic\Filter\LessFilter;
    use Assetic\Filter\CssMinFilter;
    use Assetic\AssetWriter;
    use Assetic\AssetManager;

    //Asset manager
    $am = new AssetManager();

    //Add all css files
    $css = new GlobAsset('assets/css/*.css', array(new CssMinFilter()));
    $am->set('basecss', $css);

    // Dumping assets into public
    $writer = new AssetWriter('public');
    $writer->writeManagerAssets($am);

因此,我预计资产/ css中的css文件将合并、缩小并转储到公共目录中,名为“basecss.css”。我得到的例外是:

代码语言:javascript
复制
PHP Fatal error:  Uncaught exception 'RuntimeException' with message 'Unable to write file public/' in /generate_assets/vendor/kriswallsmith/assetic/src/Assetic/AssetWriter.php:106
Stack trace:
#0 /generate_assets/vendor/kriswallsmith/assetic/src/Assetic/AssetWriter.php(65): Assetic\AssetWriter::write('public/', '*{color:green}?...')
#1 /generate_assets/vendor/kriswallsmith/assetic/src/Assetic/AssetWriter.php(54): Assetic\AssetWriter->writeAsset(Object(Assetic\Asset\GlobAsset))
#2 /generate_assets/run(31): Assetic\AssetWriter->writeManagerAssets(Object(Assetic\AssetManager))
#3 {main}
  thrown in /generate_assets/vendor/kriswallsmith/assetic/src/Assetic/AssetWriter.php on line 106

所以-似乎assetic试图转储名为“public”的文件,而不是“public/basecss.css”?有什么帮助吗?

P.S.决议:

好的。苏。显然我得走了

代码语言:javascript
复制
$css->setTargetPath('css_file_name.css');   

然后成功了..。

EN

回答 1

Stack Overflow用户

发布于 2014-02-09 17:06:32

文档中并不完全清楚,但在将资产转储到静态文件部分中确实提到

代码语言:javascript
复制
$writer->writeManagerAssets($am);

“将利用资产的目标路径。”因此,是的,正如您建议的那样,在编写资产之前设置目标路径将解决问题:

代码语言:javascript
复制
$css->setTargetPath('css_file_name.css');   
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14538335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档