Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Meta helper command broken in PHP 8.4 — Cannot make 'x': Class 'y' not found #1671

Open
sebastiaanluca opened this issue Feb 7, 2025 · 6 comments
Labels

Comments

@sebastiaanluca
Copy link

Versions:

  • ide-helper Version: 3.5.4
  • Laravel Version: 11.41.3
  • PHP Version: 8.4.3

Description:

Trying to upgrade an app to PHP 8.4 and noticed the meta generation command seems broken. Without -v it doesn't output anything, in verbose mode you get all sorts of warning, no file is generated, and the command exits with an error code.

Did not change any code, only upgraded some other packages and version number. Works on PHP 8.3 with all the same packages.

php artisan ide-helper:meta -v
Cannot make 'Address\Services\AddressService': Class 'config' not found.
Cannot make 'Address\Services\PostcodeNlApiService': Class 'config' not found.
Cannot make 'App\Http\Middleware\RequirePassword': Class 'view' not found.
Cannot make 'App\Support\Flash\FlashNotifier': Class 'session' not found.
Cannot make 'AutomatedSuggestions\Services\Rules\RuleMediator': Class 'config' not found.
Cannot make 'Barryvdh\Debugbar\SymfonyHttpDriver': Class 'session' not found.
Cannot make 'Domain\Brevo\BrevoMarketingAutomationApiService': Class 'config' not found.
Cannot make 'Domain\MyClic\MyClicApiService': Class 'config' not found.
Cannot make 'Faker\Generator': Class 'config' not found.
Cannot make 'Illuminate\Auth\Middleware\RequirePassword': Class 'view' not found.
Cannot make 'Illuminate\Bus\BatchRepository': Class 'config' not found.
Cannot make 'Illuminate\Bus\DatabaseBatchRepository': Class 'queue' not found.
Cannot make 'Illuminate\Bus\DynamoBatchRepository': Class 'config' not found.
Cannot make 'Illuminate\Cache\Console\CacheTableCommand': Class 'files' not found.
Cannot make 'Illuminate\Cache\Console\ClearCommand': Class 'cache' not found.
Cannot make 'Illuminate\Cache\Console\ForgetCommand': Class 'cache' not found.
Cannot make 'Illuminate\Concurrency\ConcurrencyManager': Class 'config' not found.
Cannot make 'Illuminate\Contracts\Auth\Authenticatable': Class 'auth' not found.
Cannot make 'Illuminate\Contracts\Auth\StatefulGuard': Class 'config' not found.
Cannot make 'Illuminate\Contracts\Broadcasting\Broadcaster': Class 'config' not found.
Cannot make 'Illuminate\Contracts\Foundation\MaintenanceMode': Class 'app' not found.
Cannot make 'Illuminate\Contracts\Pipeline\Hub': Class 'app' not found.
Cannot make 'Illuminate\Contracts\Routing\ResponseFactory': Class 'view' not found.
Cannot make 'Illuminate\Contracts\Validation\UncompromisedVerifier': Class 'events' not found.
Cannot make 'Illuminate\Database\Console\Factories\FactoryMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Database\Console\Migrations\FreshCommand': Class 'migrator' not found.
Cannot make 'Illuminate\Database\Console\Migrations\InstallCommand': Class 'config' not found.
Cannot make 'Illuminate\Database\Console\Migrations\MigrateCommand': Class 'migrator' not found.
Cannot make 'Illuminate\Database\Console\Migrations\MigrateMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Database\Console\Migrations\ResetCommand': Class 'migrator' not found.
Cannot make 'Illuminate\Database\Console\Migrations\RollbackCommand': Class 'migrator' not found.
Cannot make 'Illuminate\Database\Console\Migrations\StatusCommand': Class 'migrator' not found.
Cannot make 'Illuminate\Database\Console\MonitorCommand': Class 'db' not found.
Cannot make 'Illuminate\Database\Console\Seeds\SeedCommand': Class 'db' not found.
Cannot make 'Illuminate\Database\Console\Seeds\SeederMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\AboutCommand': Class 'composer' not found.
Cannot make 'Illuminate\Foundation\Console\CastMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\ChannelMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\ClassMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\ComponentMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\ConfigCacheCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\ConfigClearCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\ConsoleMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\EnumMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\EnvironmentDecryptCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\EnvironmentEncryptCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\EventClearCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\EventMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\ExceptionMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\InterfaceMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\JobMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\JobMiddlewareMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\ListenerMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\MailMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\ModelMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\NotificationMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\ObserverMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\PolicyMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\ProviderMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\RequestMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\ResourceMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\RouteCacheCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\RouteClearCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\RouteListCommand': Class 'router' not found.
Cannot make 'Illuminate\Foundation\Console\RuleMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\ScopeMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\TestMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\TraitMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\VendorPublishCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\ViewClearCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Console\ViewMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Foundation\Exceptions\Renderer\Renderer': Class 'config' not found.
Cannot make 'Illuminate\Foundation\MaintenanceModeManager': Class 'app' not found.
Cannot make 'Illuminate\Http\Client\Factory': Class 'events' not found.
Cannot make 'Illuminate\Log\Context\Repository': Class 'events' not found.
Cannot make 'Illuminate\Mail\Markdown': Class 'config' not found.
Cannot make 'Illuminate\Notifications\ChannelManager': Class 'config' not found.
Cannot make 'Illuminate\Notifications\Console\NotificationTableCommand': Class 'files' not found.
Cannot make 'Illuminate\Queue\Console\BatchesTableCommand': Class 'files' not found.
Cannot make 'Illuminate\Queue\Console\FailedTableCommand': Class 'files' not found.
Cannot make 'Illuminate\Queue\Console\MonitorCommand': Class 'queue' not found.
Cannot make 'Illuminate\Queue\Console\TableCommand': Class 'files' not found.
Cannot make 'Illuminate\Routing\Console\ControllerMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Routing\Console\MiddlewareMakeCommand': Class 'files' not found.
Cannot make 'Illuminate\Session\Console\SessionTableCommand': Class 'files' not found.
Cannot make 'Illuminate\Session\Middleware\StartSession': Class 'session' not found.
Cannot make 'Jenssegers\Optimus\Optimus': Class 'config' not found.
Cannot make 'Laravel\Fortify\Contracts\FailedPasswordResetLinkRequestResponse': Unresolvable dependency resolving [Parameter #0 [ <required> string $status ]] in class Laravel\Fortify\Http\Responses\FailedPasswordResetLinkRequestResponse
Cannot make 'Laravel\Fortify\Contracts\FailedPasswordResetResponse': Unresolvable dependency resolving [Parameter #0 [ <required> string $status ]] in class Laravel\Fortify\Http\Responses\FailedPasswordResetResponse
Cannot make 'Laravel\Fortify\Contracts\PasswordResetResponse': Unresolvable dependency resolving [Parameter #0 [ <required> string $status ]] in class Laravel\Fortify\Http\Responses\PasswordResetResponse
Cannot make 'Laravel\Fortify\Contracts\SuccessfulPasswordResetLinkRequestResponse': Unresolvable dependency resolving [Parameter #0 [ <required> string $status ]] in class Laravel\Fortify\Http\Responses\SuccessfulPasswordResetLinkRequestResponse
Cannot make 'Laravel\Fortify\Http\Requests\LoginRequest': Class 'request' not found.
Cannot make 'Laravel\Horizon\AutoScaler': Class 'queue' not found.
Cannot make 'Laravel\Horizon\Contracts\JobRepository': Class 'config' not found.
Cannot make 'Laravel\Horizon\Contracts\LongWaitDetectedNotification': Unresolvable dependency resolving [Parameter #0 [ <required> $connection ]] in class Laravel\Horizon\Notifications\LongWaitDetected
Cannot make 'Laravel\Horizon\Contracts\WorkloadRepository': Class 'queue' not found.
Cannot make 'Laravel\Passport\ClientRepository': Class 'config' not found.

Did read this in the readme but no code was changed and we only use what we need atm.

Note: When you receive a FatalException: class not found, check your config (for example, remove S3 as cloud driver when you don't have S3 configured. Remove Redis ServiceProvider when you don't use it).

Steps To Reproduce:

Upgrade from PHP 8.3 to 8.4. Package was already at 3.5.4.

@mfn
Copy link
Collaborator

mfn commented Feb 7, 2025

Hmm.

The package is tested against 8.4.

It rather seems your app doesn't work correctly TBH.

@sebastiaanluca
Copy link
Author

Any idea where to start looking and debugging? The app itself works fine on PHP 8.4 and even ide-helper:meta on 8.3.

@igorleszczynski
Copy link

igorleszczynski commented Feb 11, 2025

same problem after upgrade sail version to php 8.4

PHP Fatal error:  During class fetch: Uncaught ReflectionException: Class 'env' not found. in /var/www/html/vendor/barryvdh/laravel-ide-helper/src/Console/MetaCommand.php:196

@barryvdh
Copy link
Owner

I think the warnings itself are not the issue, those are caught. Not sure what is stopping the execution though.

@pataar
Copy link
Contributor

pataar commented Feb 19, 2025

The problem is a deprecation error:

Image

that's calling shouldIgnoreDeprecationErrors()

Image

that's calling a App::isRunningUnitTests() which calls bound('env')

Image

That eventually checks if 'env' is a subclass of a contract:

Image
Image

Which, lastly, errors on this autoload function:

Image

@patriziotomato
Copy link

Confirming this issue. All deprecation warnings are causing this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants