2018年1月17日更新

今天升级MediaWiki到1.30,所有的扩展程序都相应地做了升级。于是类型“MWException”的致命错误再一次的出现了。
一开始仍然沿用下面提到的方法,就是将整个Scribunto的权限都改成了755,确实解决了问题,不过心里总有种说不出的变扭。
刷新页面后又一次出现很多的Lua错误,升级前可都是好好的。看来不只是改权限这么方便。
在官方的讨论中有一个很老的解答,其中提到在LocalSettings.php中添加如下代码:

$wgScribuntoEngineConf['luastandalone']['luaPath'] = '/usr/bin/lua';

从官网文档的安装步骤中,除了在LocalSettings.php中添加如下代码:

wfLoadExtension( 'Scribunto' );
$wgScribuntoDefaultEngine = 'luastandalone';

还提到另外两个步骤,其中之一就是将Lua文件所在的目录(例如/extensions/Scribunto/engines/LuaStandalone/binaries/lua5_1_5_linux_64_generic)权限改为755,而并不是整个目录。重新尝试了一下,一切OK。
而另外一个步骤应该就是要定位Lua的位置,官网上其实提到两种方法,一种就是写代码:

# where lua is the name of the binary file
# e.g. sourceforge LuaBinaries 5.1.5 - Release 2 name the binary file lua5.1
$wgScribuntoEngineConf['luastandalone']['luaPath'] = '/path/to/binaries/lua5.1';

另一种比较复杂,首先系统要求SElinux状态为enforcing的情况下,通过终端命令来修改

chcon -t httpd_sys_script_exec_t /站点目录/extensions/Scribunto/engines/LuaStandalone/binaries/系统版本/lua

刷新页面,问题仍然存在。继续google

 $ cd wiki/extensions/Scribunto/engines/LuaStandalone/binaries/lua5_1_5_linux_64_generic
 $ ./lua -h

照理说会出现一个帮助的信息,而我出现的则是
segmentation-fault.png
最终解决问题的还是靠那个很老的答案,因为lua的默认安装路径就是在/usr/bin/lua这里。
至此问题解决!不过心理还是有疑惑,lua的路径问题是之前哪里操作错了吗?
将/usr/bin/下的lua文件复制到extensions/Scribunto/engines/LuaStandalone/binaries/lua5_1_5_linux_64_generic下,然后再调整LocalSettings.php的代码:

$wgScribuntoEngineConf['luastandalone']['luaPath'] = 'path/to/extensions/Scribunto/engines/LuaStandalone/binaries/lua5_1_5_linux_64_generic/lua';

lua-error-127.png
折腾不动了,暂时还原到默认安装路径,说不定哪天就找到答案了。

参考:《MediaWiki Error: Lua error: Internal error: The interpreter has terminated with signal “11”
提醒:
改完权限不能马上就反应出来是因为浏览器的缓存机制,所以最好清除缓存后再试,或者另外找个浏览器试试,否则很有可能像我之前那样明明可以了却还不明就里。

2017年11月20日问题描述

模板下载越多,错误累积地也越多,一篇文章满屏都是触目惊心的错误。google上的解释不多,基本上都是针对Lua语言本身的,而我又没学过。
从网上找了几个提示错误的文件的替代,覆盖掉原有的文件还是没起作用,一气之下索性就重新安装了Scribunto扩展,顺带手贱地在LocalSettings.php添加了一句代码:
$wgScribuntoUseGeSHi = true;
这是在启用SyntaxHighlight扩展后需要用到的。
刷新页面,原本的页面不见了,出现了更加令人震惊的错误提示:

[b0f7c09f4cb6f0004b9e757f] 2017-11-20 04:31:54: 类型“MWException”的致命错误

error-MWException.png
[ ]中的字符串是随机的,反正无论我怎么刷新都没有用。错误依旧。
主页没问题,可以进入。
google之后,从MediaWiki的讨论中给出的几种解决方案,挑了其中一个,好吧,这下连主页都打不开了。
LocalSettings.php中开启错误明细功能
$wgShowExceptionDetails = true;
得到的错误如下:
error-MWException-detail_1.png
问题貌似处在lua文件的执行上,找到相应目录下的lua文件,发现文件的权限为644,改成755,刷新。原先的页面出现了,只是仍然有内部错误。

Lua错误:内部错误:解释器已退出,状态为。
没有可用的进一步细节。

Lua内部错误-解释器退出.png
将整个Scribunto目录的权限都改成755,刷新,问题依旧。
这里有个疑问:因为之前上传文件都是用fireftp,这几天firefox升级之后fireftp的插件不能使用了,就改用FileZilla。用fireftp上传Scribunto时没有任何问题,而采用FileZilla之后就出错,是否跟两款软件的设置有关。另外,为了解压方便我一般都是在Linux下上传,而最近换电脑之后就一直没有折腾linux,是否跟这个也有关系呢?
运行虚拟机,在Linux下重新上传一次。重启PHP服务,重启服务器都没用。 开错误明细,问题还是原来的,改权限,然后就莫名其妙好了。
还是不知道问题出在哪里,哎~!

最后修改:2018 年 01 月 17 日
如果觉得我的文章对你有用,请随意赞赏