【问题标题】:FatalErrorException in Inflector.php line 265: syntax error, unexpected ':', expecting ';' or '{'Inflector.php 第 265 行中的 FatalErrorException:语法错误,意外 ':',期待 ';'或者 '{'
【发布时间】:2018-01-22 11:47:21
【问题描述】:

我去使用更新作曲家

composer update

更新后出现以下错误:

Inflector.php 第 265 行中的 FatalErrorException:语法错误, 意外':',期待';'或'{'

请帮忙

提前致谢

使用 Laravel 框架版本 5.2.45

这是作曲家代码

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.2.*",
        "laravelcollective/html": "*.*"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~4.0",
        "symfony/css-selector": "2.8.*|3.0.*",
        "symfony/dom-crawler": "2.8.*|3.0.*"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "files": [
            "app/Libraries/Functions.php"
        ]
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postInstall",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "php artisan optimize"
        ]
    },
    "config": {
        "preferred-install": "dist"
    }
}

请查看发生错误的inflector.php函数

public static function tableize(string $word) : string
    {
        return strtolower(preg_replace('~(?<=\\w)([A-Z])~', '_$1', $word));
    }

【问题讨论】:

标签: php laravel


【解决方案1】:

这是一个 PHP 版本问题,更新到 PHP 7.0 和教义/变形器将正常工作,因为教义/变形器 1.20 及更高版本需要 PHP 7。

但如果您想保持当前的 PHP 版本,您可以通过运行以下命令来降级教义/变形器版本:

  1. 删除 composer.lock 文件

    rm -f Composer.lock

  2. 删除供应商

    rm -R -f vendor

  3. composer install

  4. 根据你的 php 版本安装学说/变形器

    composer require doctrine/inflector:1.1.0

doctrine/inflector:1.1.0 支持 PHP 5.6 及更高版本。如果你有其他版本的php,可以参考this link

【讨论】:

【解决方案2】:

当你搜索这个文件名然后开始比较包版本时,这真的很明显。

您需要任何版本的laravelcollective/html,因此,目前,最新版本是5.5.x。这个包又需要"doctrine/inflector": "~1.1",,所以任何低于2.0的版本,目前是1.3.0需要PHP 7.0或更高版本

如果您查看最新的inflector.php 的源代码,您会看到第 265 行设置了返回类型,仅在 PHP 7.0 及更高版本中支持。

您使用的是 PHP 5.6.24,因此此代码无法在您的系统上运行。

修复错误的简单方法是使用与您的 Laravel 版本对应的 laravelcollective/html 版本。应该是5.2.*

【讨论】:

  • 这对我不起作用。我有一个在 PHP 5.6 上运行的 Laravel 5 应用程序。 Composer 需要 laravelcollective/html 5.0 版。 5.0 版的变形器不适用于 PHP 5.6。但是 Laravel 5.0 的错误处理不适用于 PHP 7.0。一个完整的捕获 22.
【解决方案3】:

我正在努力:

  • Laravel 5.1
  • PHP 5.6.36

我的表名是这样的:“test_meetings”

我解决了在 testMeeting.php 中指定表名的错误:

protected $table = 'test_meetings';

【讨论】:

    【解决方案4】:

    如果这对任何人都有帮助。我有一个类似的问题。由于某种原因,我的学说/变形器期待 php>=7(这就是在学说/变形器的 composer.json 中找到的内容)。即使我已按照说明安装 laravel 5.4,这也是如此。

    我运行rm -f Composer.lockrm -R -f vendor,然后在vagrant ssh 之后对使用php 5.6.8 的宅基地VM 执行composer install(最初我从使用php 的MacBook 终端运行composer 7)

    这解决了问题。

    【讨论】:

      【解决方案5】:

      删除 composer.lock 文件

      `rm -f Composer.lock`
      

      删除供应商文件夹

      rm -R -f vendor
      

      作曲家安装

      然后您可以使用 composer 安装特定版本的学说/变形器 例如:

      composer require doctrine/inflector:1.2.0(适用于 php 7.0)

      此外,如果您正在使用,它可以帮助我解决升级碳的构建问题

      composer require nesbot/carbon=1.29.*
      

      【讨论】:

      • inflector:1.2.0 也适用于 php 7.2。在我的例子中,将变形器从 1.4.3 降级到 1.2.0 解决了这个问题。
      【解决方案6】:

      之后

      composer install
      

      在运行 composer update 后试试这个:

      php artisan cache:clear
      

      【讨论】:

        【解决方案7】:

        我通过在模型中明确给出表名解决了我的问题 受保护的 $table = 'table_name';

        【讨论】:

          猜你喜欢
          • 2018-07-01
          • 2017-11-04
          • 1970-01-01
          • 2016-06-29
          • 2017-09-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多