服务器上的 Apache2 php 解析错误,但不是本地机器,7.2.3 到 7.2.4 问题?
Posted
技术标签:
【中文标题】服务器上的 Apache2 php 解析错误,但不是本地机器,7.2.3 到 7.2.4 问题?【英文标题】:Apache2 php parse error on server but not local machine, 7.2.3 to 7.2.4 issue? 【发布时间】: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 并解决问题。谢谢
【参考方案1】:
我遇到了同样的问题,这是 PHP 版本问题。我在服务器上安装 PHP 7.1 并通过运行此命令启用它
a2enmod php7.1
和 php -v
返回 7.1 version
但在浏览器上通过检查文件上的 phpinfo() function
显示 PHP 7.0。
我想禁用 php7.0,我通过运行来做到这一点:
a2dismod php7.0
它成功了。
P.S:您可以使用您安装的 PHP 版本,在我的情况下,我从 PHP 7.0 迁移到 7.1
【讨论】:
谢谢,我有同样的问题,你帮助了我。这对我有用。以上是关于服务器上的 Apache2 php 解析错误,但不是本地机器,7.2.3 到 7.2.4 问题?的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu Linux 上的 PHPinfo 中缺少 MySQL