I went to update composer using
composer update
after update having the following error:
FatalErrorException in Inflector.php line 265: syntax error, unexpected ':', expecting ';' or '{'
Please assist
Thanks in advance
Using Laravel Framework version 5.2.45
here is the composer code
{
"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"
}
}
Please see the function of inflector.php where error occures
public static function tableize(string $word) : string
{
return strtolower(preg_replace('~(?<=\\w)([A-Z])~', '_$1', $word));
}
It's a PHP version issue, update to PHP 7.0 and doctrine/inflector will work properly because doctrine/inflector 1.20 and above require PHP 7.
But if you want to stay at your current PHP version, you can downgrade the doctrine/inflector version by running the following commands:
Delete the composer.lock file
rm -f Composer.lock
Delete the vendor
rm -R -f vendor
composer install
Install the doctrine/inflector according to your php version
composer require doctrine/inflector:1.1.0
doctrine/inflector:1.1.0 supports PHP 5.6 & above. If you have another version of php, you can refer to this link
It's really obvious when you search for this file name and then start comparing package versions.
You are requiring laravelcollective/html
at any version, so, for now, the latest version is 5.5.x
. This package in its turn requires "doctrine/inflector": "~1.1",
, so any version below 2.0
, which is currently 1.3.0
and requires PHP 7.0 or higher.
If you look at the source of the latest inflector.php
, you will see a return type is set on line 265, which is only supported in PHP 7.0 and up.
You are using PHP 5.6.24, so this code won't work on your system.
The simple way to fix your error is to use the laravelcollective/html
version corresponding to your Laravel version. Which should probably be 5.2.*
.
I'm working on:
My table name is like this: "test_meetings"
I solved the error specifying in testMeeting.php Model the table name:
protected $table = 'test_meetings';
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With