我正在尝试让Laravel在Google App Engine标准版上运行。我已经可以灵活地使用它了,但是需求发生了变化,我们现在需要标准。我在Laravel 5.7上使用了PHP 7.2环境。部署有效,但是当尝试访问页面时,我在日志中仅收到错误消息:
Symfony\Component\Debug\Exception\FatalThrowableError: Class 'Way\Generators\GeneratorsServiceProvider' not found
at Illuminate\Foundation\Application->register (/srv/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:662)
对于我来说,第662行至少在本地是return new $provider($this);
,似乎没有明确引用generators程序包。
该生成器软件包似乎是way/generators
,但是当我在本地执行composer require way/generators
时,它会发出一百万种不同的警告,然后显示
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
In GeneratorsServiceProvider.php line 58:
Call to undefined method Illuminate\Foundation\Application::share()
Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1
据我所读的Laravel> 5,由于它已经包含了generators软件包,但由于GAE的某种原因,它试图引用它(在artisan serve
上可以正常运行)。我尝试了各种composer安装后命令,但没有任何帮助。
"post-install-cmd": [
"php artisan cache:clear",
"php artisan optimize:clear",
"php artisan config:clear",
"php artisan config:cache",
"Illuminate\\Foundation\\ComposerScripts::postInstall",
"php artisan optimize",
"chmod -R 755 bootstrap\/cache"
]
答案 0 :(得分:1)
正如您在评论中提到的那样,问题源于使用xethron/migrations-generator
(https://github.com/Xethron/migrations-generator),这需要在config/app.php
或app/Providers/AppServiceProvider.php
中手动设置服务提供商。奇怪的是,它的composer.json
不需要way/generators
,而是包含另一个包,其中还包含way/generators
的文件(?)。很奇怪,但是可以解释为什么composer install
上的事情变得凌乱。
完成后,尽管way/generators
适用于旧版本的Laravel,不一定能100%正常工作,但也可以选择对其进行核对或完成手动设置。