Je suis allé mettre à jour composer en utilisant
composer update
après la mise à jour ayant l'erreur suivante:
FatalErrorException dans Inflector.php ligne 265: erreur de syntaxe, inattendu ':', attente de ';' ou '{'
Veuillez aider
Merci d'avance
Utilisation de Laravel Framework version 5.2.45
voici le code composer
{
"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"
}
}
S'il vous plaît voir la fonction de inflector.php où l'erreur se produit
public static function tableize(string $Word) : string
{
return strtolower(preg_replace('~(?<=\\w)([A-Z])~', '_$1', $Word));
}
C’est un PHP, mise à jour vers PHP 7.0 et doctrine/inflector fonctionneront correctement) car doctrine/inflector 1.20 et versions ultérieures nécessitent PHP 7.
Mais si vous voulez rester à votre version actuelle PHP), vous pouvez rétrograder la version doctrine/inflector en exécutant les commandes suivantes:
Supprimer le fichier composer.lock
rm -f Composer.lock
Supprimer le vendeur
rm -R -f vendor
composer install
Installez la doctrine/inflector selon votre version de php
composer require doctrine/inflector:1.1.0
doctrine/inflector: 1.1.0 prend en charge PHP 5.6 et plus. Si vous avez une autre version de php, vous pouvez vous référer à ce lien
Je travaille sur:
Le nom de ma table est comme ceci: "test_meetings"
J'ai résolu l'erreur en spécifiant dans testMeeting.php Modéliser le nom de la table:
protected $table = 'test_meetings';
Il est très évident de rechercher ce nom de fichier, puis de comparer les versions de paquet.
Vous avez besoin de laravelcollective/html
dans n’importe quelle version, donc, pour l’instant, la dernière version est 5.5.x
. Ce paquet à son tour nécessite "doctrine/inflector": "~1.1",
, donc toute version inférieure à 2.0
, qui est actuellement 1.3.0
et requiert PHP 7.0 ou supérieur.
Si vous regardez la source du dernier inflector.php
, vous verrez qu'un type de retour est défini sur la ligne 265, qui n'est prise en charge que dans PHP 7.0 et plus.
Vous utilisez PHP 5.6.24, ce code ne fonctionnera donc pas sur votre système.
Le moyen simple de corriger votre erreur consiste à utiliser le laravelcollective/html
version correspondant à votre version Laravel. Ce qui devrait probablement être 5.2.*
.
Au cas où cela aiderait quelqu'un. J'avais un problème similaire. Mon doctrine/inflecteur s'attendait à php> = 7 pour une raison quelconque (c'est ce que l'on devait trouver dans composer.jon de doctrine/inflecteur). Et cela même si j'avais suivi les instructions pour installer laravel 5.4.
Iran rm -f Composer.lock
et rm -R -f vendor
puis a fait un composer install
après vagrant ssh
vers la machine virtuelle Homestead, qui utilisait PHP 5.6.8 (à l’origine, j’avais exécuté composer à partir de mon terminal MacBook, qui utilisait PHP 7)]
Cela a éclairci les problèmes.
après
composer install
Essayez ceci après avoir exécuté la composer update:
php artisan cache:clear