“assets:install” command fails with error “The target directory ”web“ does not exist”, why?

假装没事ソ 提交于 2020-08-27 22:32:49

问题


I am running a Symfony3 application inside a Docker container. I have created a CommonBundle with all the resources (js, css, images). This resources are symlinked to another path as shown below:

$ docker exec -u www-data -it dockeramp_php_1 ls -la oneview_symfony/src/CommonBundle/Resources/public
total 8
drwxrwsr-x 2 www-data www-data 4096 Feb 23 21:09 .
drwxr-sr-x 5 www-data www-data 4096 Feb 23 20:54 ..
lrwxrwxrwx 1 root     www-data   32 Feb 23 21:09 css -> /var/www/html/public_html/styles
lrwxrwxrwx 1 root     www-data   32 Feb 23 21:09 images -> /var/www/html/public_html/images
lrwxrwxrwx 1 root     www-data   28 Feb 23 21:08 js -> /var/www/html/public_html/js

The directory oneview_symfony/web does exists and it's writable by www-data as shown below:

$ docker exec -u www-data -it dockeramp_php_1 ls -la oneview_symfony/web
total 64
drwxrwsr-x 3 www-data www-data  4096 Feb 23 20:50 .
drwxrwsr-x 9 www-data www-data  4096 Feb 23 21:16 ..
-rwxrwxr-x 1 www-data www-data  3319 Feb 23 16:45 .htaccess
-rwxrwxr-x 1 www-data www-data   631 Feb 23 16:45 app.php
-rwxrwxr-x 1 www-data www-data   843 Feb 23 16:45 app_dev.php
-rwxrwxr-x 1 www-data www-data  2092 Feb 23 16:45 apple-touch-icon.png
drwxr-sr-x 2 www-data www-data  4096 Feb 23 20:50 bundles
-rw-rw-rw- 1 www-data www-data 21486 Feb 23 20:50 config.php
-rwxrwxr-x 1 www-data www-data  6518 Feb 23 16:45 favicon.ico
-rwxrwxr-x 1 www-data www-data   116 Feb 23 16:45 robots.tx

I am trying to install the assets relative or symlink switching values on the composer.json file:

{
    ...
    "extra": {
        ... 
        "symfony-web-dir": "web",
        "symfony-assets-install": "relative",
    }
}

I am trying to publish the assets running the following command and ending up with the error below:

$ docker exec -u www-data -it dockeramp_php_1 php oneview_symfony/bin/console assets:install


  [InvalidArgumentException]                  
  The target directory "web" does not exist.

What I am missing here?

There is a similar issue here but without answer so far.


回答1:


Can you try this command instead:

$ docker exec -u www-data -it dockeramp_php_1 php oneview_symfony/bin/console assets:install web

If that doesn't work, try the full path to the web directory. Let us know if that works. Not sure if that will fix the problem, but please try it.




回答2:


For anyone trying to install assets in Symfony 4 with the old Symfony3 directory structure getting:

Error thrown while running command "assets:install". Message: "The target directory "public" does not exist."

The same fix Alvin Bunk provided works:

$ bin/console assets:install web

Just manually provide the old target path




回答3:


You need to run the exact line

app/console assets:install or bin/console assets:install

(depends on your version) since it takes the path of the command as reference.




回答4:


Configure variable for assets command.

Add public-dir to composer.json

"extra": {
    "symfony-web-dir": "web",
    "public-dir": "web",
    ...
},

Because assets command relies on it (view code on github)

Look:

        $defaultPublicDir = 'public';

        // ...

        if (isset($composerConfig['extra']['public-dir'])) {
            return $composerConfig['extra']['public-dir'];
        }

        return $defaultPublicDir;


来源:https://stackoverflow.com/questions/42426517/assetsinstall-command-fails-with-error-the-target-directory-web-does-not-e

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!