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

时间:2018-01-22 11:47:22

标签: php laravel

我去使用

更新作曲家
composer update
更新后

出现以下错误:

  

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

请协助

提前致谢

使用Laravel Framework 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));
    }

7 个答案:

答案 0 :(得分:44)

这是一个PHP版本问题,对PHP 7.0和doctrine / inflector的更新将正常工作,因为doctrine / inflector 1.20及更高版本需要PHP 7.

但是如果你想保留当前的PHP版本,可以通过运行以下命令来降级doctrine / inflector版本:

  1. 删除composer.lock文件

    rm -f Composer.lock

  2. 删除供应商

    rm -R -f vendor

  3. composer install

  4. 根据您的php版本安装doctrine / inflector

    composer require doctrine/inflector:1.1.0

  5. doctrine / inflector:1.1.0支持PHP 5.6&amp;以上。如果你有另一个版本的php,你可以参考this link

答案 1 :(得分:4)

当您搜索此文件名然后开始比较包版本时,这一点非常明显。

您在任何版本都需要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.*

答案 2 :(得分:4)

我正在研究:

  • Laravel 5.1
  • PHP 5.6.36

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

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

protected $table = 'test_meetings';

答案 3 :(得分:1)

如果这有助于任何人。我遇到了类似的问题。由于某种原因,我的学说/变形器期待php&gt; = 7(这是在doctrine / inflector的composer.json中找到的)。即使我按照说明安装了laravel 5.4。

我运行了rm -f Composer.lockrm -R -f vendor,然后在composer install之后对家园VM进行了vagrant ssh,这是使用php 5.6.8(最初我运行的是作曲家我的MacBook终端,正在使用php 7)

这解决了问题。

答案 4 :(得分:1)

删除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.*

答案 5 :(得分:0)

之后

composer install

运行作曲家更新后,请尝试以下操作:

php artisan cache:clear

答案 6 :(得分:0)

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