由于php版本问题,无法使用composer建立laravel项目

问题描述 投票:0回答:1

我使用的是具有多个我自己的域的共享主机。我买了一个新的,并且专门要求我使用 php 8.2 或更高版本。使用 MultiPHP 管理器,我将其设置为 PHP 8.2 (ea-php82) 并在域目录中运行 php -v 命令,它说:

PHP 8.2.18 (cli) (built: Apr 18 2024 09:00:42) (NTS)

Copyright (c) The PHP Group

Zend Engine v4.2.18, Copyright (c) Zend Technologies

现在,当我运行composer命令composer install时,我收到一堆错误,说我正在使用8.1所以我输入了这些命令:

[foo@foo foo.com]$ which php
/usr/local/bin/php
[foo@foo foo.com]$ /usr/local/bin/php -v
PHP 8.2.18 (cli) (built: Apr 18 2024 09:00:42) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.18, Copyright (c) Zend Technologies
[foo@foo foo.com]$ which composer
/opt/cpanel/composer/bin/composer

然后根据需要输入此命令,就会发生这种情况:

[foo@foo foo.com]$ /usr/local/bin/php /opt/cpanel/composer/bin/composer install
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 composer update.

  Problem 1
    - Root composer.json requires php ^8.2 but your php version (8.1.28) does not satisfy that requirement.
  Problem 2
    - laravel/framework is locked to version v11.4.0 and an update of this package was not requested.
    - laravel/framework v11.4.0 requires php ^8.2 -> your php version (8.1.28) does not satisfy that requirement.
  Problem 3

现在,如果我尝试的最后可能的事情是使用忽略平台要求,这也导致了错误:

[foo@foo foo.com]$ /usr/local/bin/php /opt/cpanel/composer/bin/composer install --ignore-platform-reqs
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Nothing to install, update or remove
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi

   Error

  Call to undefined method ReflectionFunction::isAnonymous()

  at vendor/laravel/framework/src/Illuminate/Container/Container.php:680
    676▕      */
    677▕     protected function getClassForCallable($callback)
    678▕     {
    679▕         if (is_callable($callback) &&
  ➜ 680▕             ! ($reflector = new ReflectionFunction($callback(...)))->isAnonymous()) {
    681▕             return $reflector->getClosureScopeClass()->name ?? false;
    682▕         }
    683▕
    684▕         return false;

      +3 vendor frames

  4   [internal]:0
      Illuminate\Foundation\Application::Illuminate\Foundation\{closure}()
      +6 vendor frames

  11  artisan:13
      Illuminate\Foundation\Application::handleCommand()


   Error

  Call to undefined method ReflectionFunction::isAnonymous()

  at vendor/laravel/framework/src/Illuminate/Container/Container.php:680
    676▕      */
    677▕     protected function getClassForCallable($callback)
    678▕     {
    679▕         if (is_callable($callback) &&
  ➜ 680▕             ! ($reflector = new ReflectionFunction($callback(...)))->isAnonymous()) {
    681▕             return $reflector->getClosureScopeClass()->name ?? false;
    682▕         }
    683▕
    684▕         return false;

      +4 vendor frames

  5   artisan:13
      Illuminate\Foundation\Application::handleCommand()

Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1
[foo@foo foo.com]$

有什么解决办法吗?

我尝试在 cPanel 中使用 MultiPHP 管理器。我尝试过给出不同的 php 版本路径。我也尝试过使用作曲家的忽略平台要求命令。

php laravel composer-php
1个回答
0
投票

更新你的composer.json

"require": {
    "php": "^8.18",
© www.soinside.com 2019 - 2024. All rights reserved.