我有一个Laravel Web应用程序,其中包含我在工作台中开发的软件包。该软件包是app的git repo的一部分。该应用程序托管在Elastic Beanstalk环境中。
当我使用eb deploy
部署应用时,我在eb-activity.log(来自eb logs
)中收到以下错误:
...
(output of composer package fetches)
...
Generating autoload files
PHP Fatal error: Class 'Me\MyPackage\MyPackageServiceProvider' not found in /var/app/ondeck/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php on line 157
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Class 'Me\\MyPackage\\MyPackageServiceProvider' not found","file":"\/var\/app\/ondeck\/vendor\/laravel\/framework\/src\/Illuminate\/Foundation\/ProviderRepository.php","line":157}}Script php artisan clear-compiled handling the post-install-cmd event returned with an error
[RuntimeException]
Error Output: PHP Fatal error: Class 'Me\MyPackage\MyPackageServiceProvider' not found in /var/app/ondeck/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php on line 157
我在我的开发机器上看到了类似的错误,我通过在Laravel 4 workbench class not found中描述的workbench包目录中运行composer install
来解决。问题是,在EB在应用程序Vendor目录上运行composer之前,我无法在我的包上运行composer。配置文件的commands
块太早 - 服务器上的文件还没有 - 而且container_commands块太晚了,因为它发生在EB运行编写器之后。
如何首先运行我的包编辑器?
答案 0 :(得分:0)
我想我已经解决了这个问题,虽然感觉有些笨拙。如果应用根目录中有供应商目录,EB不会自动运行编辑器,所以...
/.gitignore
并删除说/ vendor 使用以下内容创建/vendor/.gitignore
并将其添加到git。这会将vendor
目录与单个.gitignore
文件添加到git,但会忽略其余的供应商包子目录(在部署期间将由作曲家填充)。
# ignore everything except .gitignore
!.gitignore
*
您可能已经在/.ebextensions
中有一个作曲家部署配置文件,但以防万一我的全部内容(称为01composersettings.config
),因为其他命令需要进行一些调查同样。特定于我的问题的两个命令是在01installWorkbenchPackages
之前运行的02installPackages
。
commands:
01updateComposer:
command: export COMPOSER_HOME=/root && /usr/bin/composer.phar self-update
option_settings:
- namespace: aws:elasticbeanstalk:application:environment
option_name: COMPOSER_HOME
value: /root
container_commands:
01installWorkbenchPackages:
command: "/usr/bin/composer.phar install -d /var/app/ondeck/workbench/me/my-package"
02installPackages:
command: "/usr/bin/composer.phar install"
03optimize:
command: "/usr/bin/composer.phar dump-autoload --optimize"
04storagePermissions:
command: "chmod -fR 755 /var/app/ondeck/app/storage"
确保/.ebextensions/01composersettings.config
也是git索引的一部分(git ls-tree -r master --name-only
方便检查所有文件是否存在,包括仅{{1的vendor
目录在它里面)
.gitignore