"assets:install"命令失败并显示错误"The target directory " Web " does not exist",为什么?



我在码头容器内运行Symfony3应用程序。我创建了一个具有所有资源(JS,CSS,图像)的CommonBundle。此资源与另一条路径相结合,如下所示:

$ 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

目录oneview_symfony/web确实存在,并且www-data是可写的,如下所示:

$ 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

我正在尝试在composer.json文件上安装资产relativesymlink切换值:

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

我试图发布运行以下命令的资产,并以下面的错误结束:

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

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

我在这里缺少什么?

这里有一个类似的问题,但到目前为止没有答案。

您可以尝试此命令:

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

如果那不起作用,请尝试通往web目录的完整路径。让我们知道这是否有效。不确定是否会解决问题,但请尝试。

assets命令的配置变量。

public-dir添加到composer.json

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

因为 assets命令依赖它(在github上查看代码)

看:

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

对于试图在Symfony 4中安装资产的任何人使用旧的Symfony3目录结构获取:

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

相同的修复Alvin Bunk提供了工作:

$ bin/console assets:install web

只是手动提供旧目标路径

您需要运行确切的行

app/console assets:installbin/console assets:install

(取决于您的版本),因为它以命令的路径为参考。

相关内容

最新更新