最近更新(对系统和mediawiki)后,我的Mediawiki基本上是空白的。数据库和一切似乎都完好无损。启用php调试输出后,我收到以下消息
警告:is_executable():open_basedir限制生效。文件(/ usr / bin / php)不在允许的路径中:(/ srv / http /:/ home /:/ tmp /:/ usr / share / pear /:/ usr / share / webapps /:第655行/usr/share/webapps/mediawiki/includes/Wiki.php中的/ var / lib / mediawiki /)
我的问题是我如何解决这个问题?简单地将/ usr / bin / php添加到我的open_basedir()限制中似乎非常不安全。
答案 0 :(得分:2)
似乎错误发生在MediaWiki::doJobs()
中,它试图启动一个单独的PHP进程来在后台异步处理job queue。要修复它,你可以:
编辑你的php.ini,将/usr/bin/php
添加到允许的路径,
在LocalSettings.php中设置$wgJobRunRate = 0
以完全禁用自动作业处理,并通过cron运行maintenance/runJobs.php,或
将$wgPhpCli
设置为指向某个文件,该文件在use_basedir下是允许的,但是不是可执行程序,这会导致is_executable()
检查无提示失败迫使MediaWiki回归同步作业处理。
请注意,最后一个选项虽然最简单,但可能会出现性能问题,因为这意味着MediaWiki需要在正常Web请求处理结束时运行后台作业,这可能会增加页面加载时间。
也就是说,如果您不想使用第一个选项,那么组合后两个选项可能是最安全和最有效的:通过cron运行后台作业会将它们从正常的请求处理路径中取出,同时设置{{1}一个虚拟值确保MediaWiki不会尝试为任何其他目的启动后台PHP进程。