我目前正在尝试使用php-buildpack在Swisscom Application Cloud上建立Laravel 5.6项目。
不幸的是,在cf push之后,我的public / vendor文件夹没有被上传或被删除。如果我使用cf ssh连接并导航到公用文件夹,则其中没有供应商文件夹。我尝试了所有操作,包括从.cfignore中删除了所有内容。
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安装创建的文件夹,而是包括所有需要公开使用的css / html / js文件。它们需要在本地添加,因为其中一些需要使用npm构建或进行修改。
答案 0 :(得分:1)
有一个issue,带有PHP buildpack,使得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