【发布时间】:2018-09-17 15:28:37
【问题描述】:
我正在将一个 laravel 项目部署到一个 droplet。我的一切似乎都设置正确,但是当我访问网站时,我在日志中收到以下错误:
PHP Parse error: syntax error, unexpected '?' in /var/www/public_html/studystation/vendor/symfony/http-foundation/Response.php on line 499
有问题的行如下
public function getCharset(): ?string
php 7.2.3 是开发中使用的版本。使用php -v 检查服务器正在运行 7.2.4。这种差异是否会导致解析错误,或者这可能是由于设置不当造成的?我也不确定如何在服务器上设置较旧的 php 7.2.3 以自己测试问题。我对服务器设置和配置很陌生。
【问题讨论】:
-
你完全确定你在你的 droplet 上使用 PHP 7.2.4 吗?可空类型提示为 added in PHP 7.1。听起来你有一个旧版本。 (一般来说,小版本发布不太可能引入不兼容的更改。从 7.2.3 到 7.2.4 的任何内容都不应中断。但使用与您的目标完全相同的 PHP 版本进行开发仍然是一个好主意服务器。)
-
这次我没有使用
php -v,而是转到website/info.php页面,发现服务器实际上运行的是Ubuntu 16.04上的php 7.0。我能够禁用 php 7 并解决问题。谢谢