composer install 出错了不知道啥原因

G:\WWW\renwubao>composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
PHP Fatal error:  Uncaught Error: Call to a member function connection() on null in G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:1249
Stack trace:
#0 G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1215): Illuminate\Database\Eloquent\Model::resolveConnection('mysql')
#1 G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1047): Illuminate\Database\Eloquent\Model->getConnection()
#2 G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(964): Illuminate\Database\Eloquent\Model->newBaseQueryBuilder()
#3 G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(642): Illuminate\Database\Eloquent\Model->newModelQuery()
#4 G:\WWW\renwubao\vendor\laravel-admin-ext\reporter\src\Reporter.php(117): Illuminate\Database\Eloquent\Model->save()
#5 G:\WWW\renwubao\vendor\laravel-admin-ext\reporter\src\Reporter.php(69): Encore\Admin\Reporter\Reporter->store(Array)
#6 G:\WWW\renwubao in G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php on line 1249
PHP Fatal error:  Uncaught Error: Call to a member function connection() on null in G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:1249
Stack trace:
#0 G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1215): Illuminate\Database\Eloquent\Model::resolveConnection('mysql')
#1 G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1047): Illuminate\Database\Eloquent\Model->getConnection()
#2 G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(964): Illuminate\Database\Eloquent\Model->newBaseQueryBuilder()
#3 G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(642): Illuminate\Database\Eloquent\Model->newModelQuery()
#4 G:\WWW\renwubao\vendor\laravel-admin-ext\reporter\src\Reporter.php(117): Illuminate\Database\Eloquent\Model->save()
#5 G:\WWW\renwubao\vendor\laravel-admin-ext\reporter\src\Reporter.php(69): Encore\Admin\Reporter\Reporter->store(Array)
#6 G:\WWW\renwubao in G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php on line 1249
Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 255
G:\WWW\renwubao>composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
PHP Fatal error:  Uncaught Error: Call to a member function connection() on null in G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:1249
Stack trace:
#0 G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1215): Illuminate\Database\Eloquent\Model::resolveConnection('mysql')
#1 G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1047): Illuminate\Database\Eloquent\Model->getConnection()
#2 G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(964): Illuminate\Database\Eloquent\Model->newBaseQueryBuilder()
#3 G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(642): Illuminate\Database\Eloquent\Model->newModelQuery()
#4 G:\WWW\renwubao\vendor\laravel-admin-ext\reporter\src\Reporter.php(117): Illuminate\Database\Eloquent\Model->save()
#5 G:\WWW\renwubao\vendor\laravel-admin-ext\reporter\src\Reporter.php(69): Encore\Admin\Reporter\Reporter->store(Array)
#6 G:\WWW\renwubao in G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php on line 1249
PHP Fatal error:  Uncaught Error: Call to a member function connection() on null in G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php:1249
Stack trace:
#0 G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1215): Illuminate\Database\Eloquent\Model::resolveConnection('mysql')
#1 G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1047): Illuminate\Database\Eloquent\Model->getConnection()
#2 G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(964): Illuminate\Database\Eloquent\Model->newBaseQueryBuilder()
#3 G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(642): Illuminate\Database\Eloquent\Model->newModelQuery()
#4 G:\WWW\renwubao\vendor\laravel-admin-ext\reporter\src\Reporter.php(117): Illuminate\Database\Eloquent\Model->save()
#5 G:\WWW\renwubao\vendor\laravel-admin-ext\reporter\src\Reporter.php(69): Encore\Admin\Reporter\Reporter->store(Array)
#6 G:\WWW\renwubao in G:\WWW\renwubao\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php on line 1249
Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 255
阅读 9.1k
2 个回答

尝试删除 vendor 目录内容,使用

$ composer update

同样遇到了这个问题,说一下我的处理方式

触发的场景

  1. 如laravel的文档所说:laravel升级版本到6.x-7.x,可能会导致该问题被触发!具体可以看这里
  2. 【该情况是我遇到的】单独执行php artisan package:discover --ansi没有问题,但是一旦配合composer更新执行就触发,排查到php的error.log发现原因:有一个脚本在析构函数中未经检查就尝试去获取RMQ的链接然后进行资源释放,由于发布机器没有绑定RMQ的内网地址,导致composer autoload的时候(该过程composer会自动的new Class()生成autoload文件,因此触发了析构函数的链接)超时执行失败

综上:

  1. 代码里用了vendor里没有的类,此时可以检查一下执行composer的php版本是否不一致,从而导致加载的类库不同,导致类或函数调用丢失【例如:使用php7执行正常,切换至php5就不正常】
  2. 查看一下对应时间节点的php_error.log,是否有报错【例如:文件读写权限受限、链接资源超时、扩展没开之类...】

希望以上能对你有帮助!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题