服务器上的 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.1php -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

测试php解析

PHP解析错误导致连接重置

Ubuntu上的Mysql apache2 phpmyadmin

Ubuntu 服务器 13.10 上的 ZPanel

ubuntu 上的 apache2 - php 文件下载