【问题标题】:PHP Fatal error: Default value for parameters with a class type hint can only be NULL in /usr/share/php/Symfony/Component/PHP 致命错误:具有类类型提示的参数的默认值只能在 /usr/share/php/Symfony/Component/ 中为 NULL
【发布时间】:2020-05-04 05:51:43
【问题描述】:

我从 github 克隆了具有以下依赖项的新项目:

"require": {
    "php": ">=5.6.4",
    "backpack/base": "^0.7.16",
    "backpack/crud": "^3.2",
    "backpack/permissionmanager": "^2.1",
    "barryvdh/laravel-cors": "^0.9.2",
    "laravel/framework": "5.4.*",
    "laravel/passport": "^2.0",
    "laravel/tinker": "~1.0",
    "league/fractal": "^0.16.0"
},

当我运行 composer update 或任何其他命令时,它会显示如下错误:

PHP Fatal error: Default value for parameters with a class type hint can only be NULL in /usr/share/php/Symfony/Component/Console/Application.php on line 85

Fatal error: Default value for parameters with a class type hint can only be NULL in /usr/share/php/Symfony/Component/Console/Application.php on line 85

我目前使用的是 PHP 5.6。可能是什么问题?

【问题讨论】:

  • 您的 php 版本可能是问题所在...scalar type hints(标量变量是那些包含 integerfloatstringboolean 的变量)自 @987654329 起才受支持@。例如如果您在较旧的 PHP 版本上运行代码,它需要一个字符串类,即它不允许字符串(标量)默认值。
  • 由于它在/usr/share/php/... 中报告错误,我想问题不在您的克隆仓库中。您的include_path 中是否列出了此路径?它清楚地表明 CLASS 类型提示的默认值只能是nullfunction myFunction(SomeClass $parameter = null) {}。请将有问题的文件和行添加到您的问题中。

标签: php laravel-5 github composer-php


【解决方案1】:

我删除了composer(在我使用PHP7时安装的)并重新安装了它。解决了我的问题。

Ubuntu 20.04、PHP5.6

  1. 类型作曲家
  2. sudo rm -r /usr/local/bin/composer(或 sudo apt remove composer)
  3. sudo rm -r ~/.cache/composer
  4. sudo rm -r ~/.local/share/composer
  5. sudo rm -r ~/.config/composer
  6. sudo apt install curl php5.6-cli
  7. 卷曲-sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

【讨论】:

  • 谢谢,这很有帮助,虽然我会先尝试sudo apt remove composer,然后再使用rm -r。跑type composer的目的是什么?
【解决方案2】:

您的 Composer 版本不适用于 php 5.6

要将其用作composer.phar,请将其用作composer.phar

https://getcomposer.org/download/

下载 Composer 最新版本:v2.0.9

要在当前目录中快速安装 Composer,请在终端中运行以下脚本。要自动安装,请使用以编程方式安装 Composer 的指南。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

【讨论】:

  • Composer 支持 PHP 5.3,它应该可以在 PHP 5.6 上正常运行。
  • @rob006 我遇到了同样的错误,使用 php7.2 安装 composer global 降级到 5.6,因为 Composer 使用 Symfony CLI,所以从 Composer 获取错误,请参阅消息。 PHP 致命错误:在第 85 行的 /usr/share/php/Symfony/Component/Console/Application.php 中,带有类类型提示的参数的默认值只能为 NULL 创建一个 composer.phar,如 php5.6 和错误消失了。感谢您的投票,也许可以测试设置。
猜你喜欢
  • 2020-04-20
  • 1970-01-01
  • 1970-01-01
  • 2022-07-12
  • 2017-04-29
  • 2014-03-05
  • 2014-12-27
  • 1970-01-01
  • 2019-01-23
相关资源
最近更新 更多