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.lock
和rm -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: