简体   繁体   中英

Class Psy/ShellOutput not found when using php artisan tinker

I created a new project with the

composer create-project --prefer-dist laravel/laravel test-web

command. When I tried to use the php artisan tinker to test some stuff described in the documentation I got the following non-stop appearing error:

PHP Error: Class 'Psy/ShellOutput' not found in C:/Users/Development/Projects/laravel/test-web/vendor/psy/psysh/src/Shell.php on line 374

It kept flooding the command line until I pressed CTRL+C

I haven't found anything related with the error in the web. I also checked the files of the class were there, used composer update, tried laravel new test-web-2 and nothing.

Running php artisan tinker in an older project doesn't give me any error so I think it is about a newer version maybe? Is there a way to make it work? I am running it on Windows 10, PHP 7.3.3

PsySH v0.9.10 had a bug—a missing use statement, thanks to a botched git rebase —and there was about a twenty minute window where installing it would pick up that version. composer update should get you v0.9.11 which is certified bug free! (at least from that bug )

This could be a number of things, depending on what (if anything) you've added to the base distro... but a couple of things I've run into that might help you are:

Clear out the composer autoload cache:

composer dump-autoload

If this doesn't help, it is possibly a namespace/use issue. If you have added any new classes that tinker may be trying to access, make sure the namespace matches the use statement in any class that uses it.

So, if class Foo is namespaced like so:

namespace App\Stuff\Foo;

make sure that any other class that uses it pulls it in with the correct namespace :

use App\Stuff\Foo;

Edit:

Per the OP's comment below, it appears that the use clause is indeed the culprit. It is possible that the latest version is missing the following line in:

/vendor/psy/psysh/src/Shell.php

use Psy\Output\ShellOutput;

For others coming to this question: While this will repair the issue temporarily, it is not recommended to make changes to the vendor files; the next time you update this via composer, it may overwrite your changes. You may be better served to revert to a stable version until the package is sorted.

I got this problem after a fresh installation too, but when I try with another project that just created earlier it didn't have this error.

my solution is add

use Psy\Output\ShellOutput;

in

/vendor/psy/psysh/src/Shell.php

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM