LookingGlass 在 PHP 7+ 版本报错无法正常使用的解决方法

LookingGlass 是一个非常好的在线测试工具,部署之后可以测试 ping、mtr、traceroute 等信息。前几天把一台部署了 LookingGlass 的 VPS 升级到了 PHP 7.3,升级之后也没注意,不过刚刚想到上去测试了一下,发现居然不能用,这就很奇怪。于是简单排查了一下问题,还好快速定位到了问题所在,就在此记录一下解决方法。这次错误主要是“PHP Fatal error: Uncaught Error: Function name must be a string in Ajax.php”这个错误,是由于 PHP 版本之间语法不兼容导致的。

一、LookingGlass 无法运行的可能原因

如果我们首次安装之后无法运行,或者是在 PHP5 版本上面运行不了,建议先参考下面这篇文章进行排查问题:《解决 LookingGlass 在 Ubuntu 16.04 LTS 上无法使用的问题》。

一般来说都是因为 proc_open 这个函数被禁用导致的,我们只需参考上面的文章将这个函数启用就可以了。

二、LookingGlass 适配 PHP7 以上版本

此外,对于 PHP7 版本,打开调试模式之后,我们可以看到下面的报错信息:

PHP Fatal error: Uncaught Error: Function name must be a string in Ajax.php

这是因为对于 PHP7,写法不一样了,需要对 ajax.php 文件进行修改。

在 LookingGlass 根目录找到 ajax.php 文件,打开后,找到第 44 行:

$output = $lg->$_GET['cmd']($_GET['host']);

替换成:

$output = $lg->{$_GET['cmd']}($_GET['host']);

保存之后,就可以正常使用了。

关于这个问题,其实已经有两个 PR(参考 1参考 2),但是 LookingGlass 项目作者一直没有合并,不知道为什么。


【AD】美国洛杉矶CN2 VPS/香港CN2 VPS/日本CN2 VPS推荐,延迟低、稳定性高、免费备份_搬瓦工vps

【AD】RackNerd 推出的 KVM VPS 特价优惠,在纽约、西雅图、圣何塞和阿什本每年仅需 12.88 美元!