首先是 composer 版本,正常情况下应该是 composer self-update [--stable],但当我更新到最新的 2.3.7,再去 安装确提示:

Composer 2.3.0 dropped support for PHP <7.2.5 and you are running 7.1.33, please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.

所以需要环境中的 PHP 版本要大于 PHP 7.2.5 才能使用 composer 2.3.7 的版本。想要执行 composer self-update --2.2 退回到 composer 2.2,但还是提示这个错误。也就是说当前 composer 需要配合 PHP 7.2.5 以上版本才能工作。

所以先启用一个 PHP 8.0,如果环境中 PHP 依然是 PHP 7.1,可以先将 PHP 7.1 卸载掉。然后执行 composer self-update --2.2 回退 composer 版本为 2.2,最后再切换 PHP 版本为 7.1。

最初始先使用的 PHP 8.0,配合着 composer 2.3.0 安装第三方库的,此时报错:

[root@VM-16-14-centos cstation]# composer install
Do not run Composer as root/super user! See https://getcomposer.org/root for det                                                                                                              ails
Continue as root/super user [yes]? yes
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Your lock file does not contain a compatible set of packages. Please run compose                                                                                                              r update.

  Problem 1
    - doctrine/annotations is locked to version v1.4.0 and an update of this pac                                                                                                              kage was not requested.
    - doctrine/annotations v1.4.0 requires php ^5.6 || ^7.0 -> your php version                                                                                                               (8.0.14) does not satisfy that requirement.
  Problem 2
    - doctrine/cache is locked to version v1.6.2 and an update of this package w                                                                                                              as not requested.
    - doctrine/cache v1.6.2 requires php ~5.5|~7.0 -> your php version (8.0.14)                                                                                                               does not satisfy that requirement.
...

此时 composer 已是最高版本,所以问题不在 composer 上,而是项目的依赖库的 PHP 版本与当前环境中的 PHP 版本不匹配,需要降低 PHP 到合适版本。

在解决了 composer 与 PHP 的版本问题之后,再次 composer install,报错:

PHP Warning:  putenv() has been disabled for security reasons in phar:///www/server/php/80/bin/composer/vendor/composer/xdebug-handler/src/Process.php on line 101

Warning: putenv() has been disabled for security reasons in phar:///www/server/php/80/bin/composer/vendor/composer/xdebug-handler/src/Process.php on line 101
PHP Warning:  putenv() has been disabled for security reasons in phar:///www/server/php/80/bin/composer/src/Composer/Util/Platform.php on line 57

Warning: putenv() has been disabled for security reasons in phar:///www/server/php/80/bin/composer/src/Composer/Util/Platform.php on line 57


  [ErrorException]
  putenv() has been disabled for security reasons

这是宝塔面板的 PHP 版本默认禁用函数 putenv 导致的,禁用函数里还有一个 proc_open 也需要删除掉,不然也会报错。

之后还有必要的扩展:

Your lock file does not contain a compatible set of packages. Please run composer update.

  Problem 1
    - intervention/image is locked to version 2.6.1 and an update of this package was not requested.
    - intervention/image 2.6.1 requires ext-fileinfo * -> it is missing from your system. Install or enable PHP's fileinfo extension.

这是需要安装 fileinfo,一般还会根据需要安装 opcache 和 redis 扩展。

自此,laravel 安装三方依赖库才算完成。