php – assetic – 无法写资产

前端之家收集整理的这篇文章主要介绍了php – assetic – 无法写资产前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的目录结构(这只是一个测试项目):
  1. stan@mypc:/generate_assets$sudo tree -L 3 -p
  2. .
  3. ├── [drwxr-xr-x] assets
  4. └── [drwxr-xr-x] css
  5. ├── [-rw-r--r--] test1.css
  6. └── [-rw-r--r--] test2.css
  7. ├── [-rw-r--r--] composer.json
  8. ├── [-rw-r--r--] composer.lock
  9. ├── [drwxrwxrwx] public
  10. ├── [-rwxr-xr-x] run
  11. └── [drwxr-xr-x] vendor
  12. ....skipping...

这是我的简单脚本(‘run’文件),它应该生成资产:

  1. #!/usr/bin/env PHP
  2.  
  3. <?PHP
  4. //loading composer's autoload
  5. chdir(__DIR__);
  6. if (file_exists('vendor/autoload.PHP')) {
  7. include 'vendor/autoload.PHP';
  8. }
  9.  
  10. use Assetic\Asset\AssetCollection;
  11. use Assetic\Factory\AssetFactory;
  12. use Assetic\Asset\FileAsset;
  13. use Assetic\Asset\GlobAsset;
  14. use Assetic\Filter\LessFilter;
  15. use Assetic\Filter\CssMinFilter;
  16. use Assetic\AssetWriter;
  17. use Assetic\AssetManager;
  18.  
  19. //Asset manager
  20. $am = new AssetManager();
  21.  
  22. //Add all css files
  23. $css = new GlobAsset('assets/css/*.css',array(new CssMinFilter()));
  24. $am->set('basecss',$css);
  25.  
  26. // Dumping assets into public
  27. $writer = new AssetWriter('public');
  28. $writer->writeManagerAssets($am);

所以 – 我预计来自资产/ css的css文件将被组合,被细分并转储到名为“basecss.css”的公共目录中.这是我得到的例外:

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

所以 – 似乎assetic试图转储名为’public’而不是’public / basecss.css’的文件?任何帮助?

附:解析度:

好.洙.显然我必须跑

  1. $css->setTargetPath('css_file_name.css');

然后它工作…

从文档中不完全清楚,但在 Dumping Assets to static files部分中提到
  1. $writer->writeManagerAssets($am);

“将利用资产的目标路径”.所以是的,你建议在编写资产之前设置目标路径可以解决问题:

  1. $css->setTargetPath('css_file_name.css');

猜你在找的PHP相关文章