【问题标题】:Folder public/vendor does not get uploaded with cf push文件夹 public/vendor 没有通过 cf push 上传
【发布时间】:2019-01-09 23:30:18
【问题描述】:

我目前正在尝试使用 php-buildpack 在 Swisscom Application Cloud 上设置一个 Laravel 5.6 项目。

不幸的是,我的 public/vendor 文件夹在 cf push 后上传后没有上传或被删除。如果我使用 cf ssh 连接并导航到公用文件夹,则里面没有供应商文件夹。我尝试了一切,包括从 .cignore 中删除所有内容。

options.json

{
  "LIBDIR": "vendor",
  "WEBDIR": "public",
  "PHP_VERSION": "{PHP_70_LATEST}",
  "COMPOSER_VENDOR_DIR": "vendor",
  "PHP_EXTENSIONS": [ "bz2", "zlib", "openssl", "tokenizer", "curl", 
  "mcrypt", "mbstring", "pdo", "pdo_mysql", "fileinfo", "gd", 
  "pdo_sqlite"],
  "PHP_MODULES": ["fpm", "cli"],
  "ADDITIONAL_PREPROCESS_CMDS": [
    "php artisan migrate --force",
    "php artisan config:cache"
  ]
}

如果我将我的 public/vendor 文件夹复制到 public/vendor2,该文件夹在 cf push 后在服务器上可用。

编辑:我需要提一下,public/vendor 文件夹不是通过执行 composer install 创建的文件夹,而是包含所有需要公开的 css/html/js 文件。它们需要在本地添加,因为其中一些需要使用 npm 构建或修改。

【问题讨论】:

  • 你不使用作曲家添加吗?
  • 使用 composer 添加 /vendor 文件夹。但是 /public/vendor 文件夹包含来自本地添加的特定作曲家包的可公开访问的文件。

标签: php laravel swisscomdev


【解决方案1】:

PHP buildpack 中有一个issue,它使cf push 忽略所有以vendor 为名称的文件夹。

作为一种解决方法,您可以创建一个symlink,例如,您可以使用一个名为my-vendor 的目录并使用vendor 作为名称创建一个指向它的符号链接:

$ cd public
$ mkdir my-vendor
$ ln -s my-vendor vendor

部署cf push . 后,您可以通过cf ssh . 进行验证,并且应该创建符号链接public/vendor,如下所示:

vcap@aceb5ff2-a9dc-41f4-50be-f234:~/app/public$ ls -al app/public/
total 8
drwxr-xr-x 3 vcap vcap   54 Aug  2 14:13 .
drwxr-xr-x 1 vcap root 4096 Aug  2 14:13 ..
-rw-r--r-- 1 vcap vcap  501 Aug  2 14:01 index.php
drwxr-xr-x 2 vcap vcap   36 Aug  2 13:50 my-vendor
lrwxrwxrwx 1 vcap vcap    9 Aug  2 13:50 vendor -> my-vendor

【讨论】:

  • 感谢您的解释。是否有计划在不久的将来修复此错误?否则我会使用你的解决方法。
  • 我使用了你的解决方法,它就像一个魅力。谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-09-28
  • 2012-02-22
  • 2014-08-15
  • 2013-09-26
  • 2012-10-27
  • 2019-08-13
  • 1970-01-01
  • 2012-09-19
相关资源
最近更新 更多