我去更新作曲家使用
composer update
更新后出现以下错误:
FatalErrorException in Inflector.php line 265: syntax error,
unexpected ':', expecting ';' or '{'
请协助
提前致谢
使用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));
}
参考的可能重复-PHP中的此错误是什么意思?
错误出现在inflector.php文件中的vendor / doctrine / inflector / lib中
@jerodev使用PHP 5.6.24版
这是一个PHP版本的问题,更新到PHP 7.0,而doctrine / inflector 1.20及更高版本需要PHP 7,才能正常运行。
但是,如果您想保持当前的PHP版本,可以通过运行以下命令来降级doctrine / inflector版本:
删除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,则可以参考此链接
如何更改php版本:stackoverflow.com/questions/42619312/
非常感谢你。 在PHP版本5.6上使用Laravel 5.0时,我遇到了类似的问题。 这成功了。
非常感谢您,它对我的工作。
我正在尝试:
Laravel 5.1
PHP 5.6.36
我的表名称是这样的:" test_meetings"
我解决了在testMeeting.php模型表名中指定的错误:
protected $table = 'test_meetings';
当您搜索此文件名然后开始比较软件包版本时,这确实很明显。
您需要任何版本的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版本7.1.1
那对我不起作用。 我有一个在PHP 5.6上运行的Laravel 5应用程序。 Composer需要laravelcollective / html 5.0版。 版本5.0的Inflector在PHP 5.6上不起作用。 但是Laravel 5.0s的错误处理在PHP 7.0上不起作用。 完全捕获22。
万一这对任何人都有帮助。我有一个类似的问题。由于某些原因,我的学说/变形器期望php> = 7(这是从学说/变形器中的composer.json中找到的)。即使我已按照说明安装laravel 5.4,也是如此。
我运行了rm -f Composer.lock和rm -R -f vendor,然后在vagrant ssh之后对使用php 5.6.8的homestead VM进行了composer install(最初我是从MacBook终端运行composer的,而后者使用的是php 7)
这解决了问题。
后
composer install
运行作曲家更新后,请尝试以下操作:
php artisan cache:clear