关于composer更新的问题

从Prov2.2版本之后composer安装的扩展基本要求php版本要在7.4之上包括7.4

为了用户安装可以选择多个php版本,无奈之下改了vendor兼容了7.1-7.4版本,但是我们强烈建议您使用php7.4版本。

如果开发者想更新composer一定要切换到php7.4版本进行安装扩展;

问题1:composer update 更新后队列无法执行,各种报错

可能原因: 可能原因是自动升级了think-queue;可能原因是升级了各种扩展导致不兼容或者类文件丢失等等。问题很多;
处理方法:不要盲目使用composer update,如果需要更新某个扩展请使用:

问题2:多个php版本开发中应该选择哪个版本?

答: 果断选择PHP7.4,可能会在之后版本逐渐淘汰7.4之下的版本;也是为了更好的性能;

问题3: composer怎么安装指定版本扩展?

答: composer require 扩展名:~5.0

问题4:安装扩展后,后台前台无法访问?

答: 检查vendor/services.php文件内是否是空的,如果是空的。那就是证明安装到最后一步执行php think service:discover失败了,可以直接执行:composer dump-autoload。然后去看vendor/services.php文件是否恢复正常

问题5:composer2.0版本安装扩展后执行php think service:discover 还是无法访问?

找到vendor\topthink\framework\src\think\console\command\ServiceDiscover.php文件

32行左右,在此行上增加代码,如下代码,然后保存,在执行php think service:discover

            if (isset($packages['packages'])) {
                $packages = $packages['packages'];
            }

            $services = [];
            foreach ($packages as $package) {
                if (!empty($package['extra']['think']['services'])) {
                    $services = array_merge($services, (array) $package['extra']['think']['services']);
                }
            }

修改了topthink底层文件是否影响之后的扩展安装,肯定是会的。还有一种办法就是升级·topthink框架,框架已经兼容了composer2.0版本的上述问题

问题6:按照上面两种办法都不能正常访问网站?

手动修改vendor/services.php 文件,在文件中增加如下代码

return array (
  0 => 'think\\captcha\\CaptchaService',
  1 => 'think\\app\\Service',
  2 => 'think\\queue\\Service',
);
本页目录