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 项目作者一直没有合并,不知道为什么。

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《LookingGlass 在 PHP 7+ 版本报错无法正常使用的解决方法
文章链接:https://oldtang.com/7128.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。