laravel 5.6 服务器错误

laravel 5.6 server error

我的网站在 localhost 上运行完美,但是当移动到 Ubuntu 16.04 LTS 的实时服务器时,我收到了这个错误

[Mon Mar 05 11:11:28.968821 2018] [:error] [pid 19322] [client 156.212.75.255:61635] PHP Parse error: syntax error, unexpected '?', expecting variable (T_VARIABLE) in XXXXXXXXXX/vendor/symfony/finder/Comparator/NumberComparator.php on line 42 [Mon Mar 05 11:11:28.968895 2018] [:error] [pid 19322] [client 156.212.75.255:61635] PHP Fatal error: Exception thrown without a stack frame in Unknown on line 0 [Mon Mar 05 11:11:28.969374 2018] [:error] [pid 19322] [client 156.212.75.255:61635] PHP Parse error: syntax error, unexpected '?', expecting variable (T_VARIABLE) in XXXXXXXXXX/vendor/symfony/finder/Comparator/NumberComparator.php on line 42 [Mon Mar 05 11:11:28.969390 2018] [:error] [pid 19322] [client 156.212.75.255:61635] PHP Fatal error: Exception thrown without a stack frame in Unknown on line 0

我该如何解决这个问题以及删除 public 目录的正确方法是什么?

如果您查看来源 code

/**
 * @param string|int $test A comparison string or an integer
 *
 * @throws \InvalidArgumentException If the test is not understood
 */
public function __construct(?string $test)
{

?string,叫做Nullable类型。此功能出现在 php 7.1 之后(请参阅文档 here)。所以你需要在你的服务器上升级 php 版本。确保获得最低 php 版本 7.1。或者使它与您的本地环境相同。

按照此 link 将 php 版本升级到 7.2

https://thishosting.rocks/install-php-on-ubuntu/

然后 运行 这个命令

sudo a2enmod php7.2 sudo a2dismod php7.0

sudo service apache2 restart

检查你的 php 版本,很可能就是这样:

对于ubuntu家庭:

> a2dismod php5.6 #current version
> a2enmod php7.1 #required version ( 7.0, 7.1, 7.2 )
> service apache2 restart

禁用php7.0

sudo a2dismod php7.0 

启用php7.1

sudo a2enmod php7.1 #to enable 7.1

重启apache

sudo service apache2 restart