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

Posted

技术标签:

【中文标题】Inflector.php 第 265 行中的 FatalErrorException:语法错误,意外 \':\',期待 \';\'要么 \'\'【英文标题】:FatalErrorException in Inflector.php line 265: syntax error, unexpected ':', expecting ';' or ''Inflector.php 第 265 行中的 FatalErrorException:语法错误,意外 ':',期待 ';'要么 '' 【发布时间】:2018-07-01 01:02:37 【问题描述】:

我去使用更新作曲家

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));
    

【问题讨论】:

Reference - What does this error mean in PHP?的可能重复 错误在inflector.php文件中的vendor/doctrine/inflector/lib中 @jerodev 使用 PHP 版本 5.6.24 【参考方案1】:

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

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

    删除 composer.lock 文件

    rm -f Composer.lock

    删除供应商

    rm -R -f vendor

    composer install

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

    composer require doctrine/inflector:1.1.0

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

【讨论】:

如何更改php版本:***.com/questions/42619312/… 非常感谢。我在 PHP 5.6 版上使用 Laravel 5.0 时遇到了类似的问题。这成功了。【参考方案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';

【讨论】:

以上是关于Inflector.php 第 265 行中的 FatalErrorException:语法错误,意外 ':',期待 ';'要么 ''的主要内容,如果未能解决你的问题,请参考以下文章

从 UITableView 中删除行会更改存储在其他行中的信息

XmlFileLoader.php 第 281 行中的 symfony 2.8 InvalidArgumentException

之前的 Erlang 语法错误:第 55 行中的 'end'

RouteCollection.php 第 201 行中的 Laravel 5 MethodNotAllowedHttpException:

Laravel 5.4 上 Manager.php 第 139 行中的 FatalErrorException

RouteCollection.php 第 218 行中的 MethodNotAllowedHttpException