我在PHP 5.6.4服务器上安装了Laravel 5.4,但无法启动该应用程序。使用相同的配置在本地一切正常,但是在服务器上我收到此错误:
(1/1) FatalErrorException syntax error, unexpected '?', expecting variable (T_VARIABLE)
in PDOConnection.php line 24
服务器上的CLI版本是7.2,而phpinfo()显示5.6.40。该错误显示在需要数据库访问的页面上。没有数据库请求时,它可以正常工作。
谢谢:)
答案 0 :(得分:2)
PDOConnection.php
是doctrine/dbal
包中的文件,其line 24与PHP 5.4(使用?array
)不兼容。
Laravel 5.4 doctrine/dbal~2.5
中的has require-dev
,但是在版本2.5中没有这样的问题(line 40)。
似乎您必须删除vendor
文件夹并再次运行composer install
,这将安装所需的依赖项。
已添加
: @aynber指出,您的问题是使用PHP 7.2安装依赖项并在PHP 5.6上运行,因此在删除vendor
文件夹之后并重新安装之前,应将其添加到composer.json
:
"config": {
"platform": {
"php": "5.6.40"
}
}
答案 1 :(得分:0)
确定要使用Laravel 5.4吗? Laravel 5.4 should be using doctrine/dbal@~2.5
,其中there is only a comment on line 24。看来您所使用的版本至少是2.9,该版本使用的nullable types仅在PHP 7.1+中可用。
您的选择:
laravel/framework@5.4
答案 2 :(得分:0)
感谢您的帮助,我已解决问题。
我用“ composer clearcache”清除了作曲家缓存,然后运行:
composer,返回了作曲者的路径
然后我跑了
php -d allow_url_fopen =关于COMPOSER_PATH_FROM_PREV_STEP更新
它更新了所有依赖项以与PHP5.6一起使用:)