我去使用
更新作曲家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));
}
答案 0 :(得分:44)
这是一个PHP版本问题,对PHP 7.0和doctrine / inflector的更新将正常工作,因为doctrine / inflector 1.20及更高版本需要PHP 7.
但是如果你想保留当前的PHP版本,可以通过运行以下命令来降级doctrine / inflector版本:
删除composer.lock文件
rm -f Composer.lock
删除供应商
rm -R -f vendor
composer install
根据您的php版本安装doctrine / inflector
composer require doctrine/inflector:1.1.0
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)
我正在研究:
我的表名是这样的:“ test_meetings”
我解决了在testMeeting.php模型表名中指定的错误:
protected $table = 'test_meetings';
答案 3 :(得分:1)
如果这有助于任何人。我遇到了类似的问题。由于某种原因,我的学说/变形器期待php&gt; = 7(这是在doctrine / inflector的composer.json中找到的)。即使我按照说明安装了laravel 5.4。
我运行了rm -f Composer.lock
和rm -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';