FAQ:MediaWiki

来自Wikioe
跳到导航 跳到搜索


关于

手册:常见问题

open_basedir 问题

Warning: is_executable(): open_basedir restriction in effect. File(/bin/bash) is not within the allowed path(s): (/www/wwwroot/wiki.eijux.com/:/tmp/) in /www/wwwroot/wiki.eijux.com/includes/shell/Command.php on line 311

    MediaWiki:open basedir问题.png


open_basedir(防止跨站攻击) :用于将 PHP 所能打开的文件限制在指定的目录树,以此防止跨目录、跨站的访问。

1、本指令不受安全模式打开或者关闭的影响。

2、当一个脚本试图打开一个文件时,该文件的位置将被检查。

3、当文件在指定的目录树之外时 PHP 将拒绝打开它。

  • open_basedir 指定的限制是路径前缀,而非目录名。(如:设置“/dir/user”,则“/dir/user”和“/dir/user1”都是可以访问的)。
    • 所以如果要将访问限制在仅为指定的目录,应用斜线结束路径名(如:“/dir/user/”)。
  • open_basedir 若配置为 Linux 根目录“/”,则一定不会再报错,但是“防止跨站攻击”也就没啥意义了。


解决方案:

  1. 关闭“防止跨站攻击”
    1. 通过“宝塔面板”关闭:网站 -> 站点设置 -> 网站目录:取消“防止跨站攻击(open_basedir)”。如下图:
      宝塔面板:防止跨站攻击(open basedir).png
    2. 通过“配置文件”关闭:注销如下语句即禁用。
      ...
      
      phpIniOverride  {
      #php_admin_value open_basedir "/tmp/:/www/wwwroot/wiki.eijux.com/"
      }
      
      ...
      
      • 配置文件:位于“/www/server/panel/vhost/openlitespeed/detail/wiki.eijux.com.conf”。
  2. 配置“open_basedir”:修改“.user.ini”文件,添加必要的目录树。步骤:
    1. 根据错误信息,查找需要添加的目录;
      如上:“File(/bin/bash) 不在被允许的路径中”
      • 也可以根据“服务器上的站点错误日志[1]”。
    2. 确认“待添加目录”的“实际路径”:因为目录可能是 Symlink(符号链接);
      如上:“/bin/bash”就是指向“/usr/bin/bash”的符号链接。
    3. 开启站点的“防止跨站攻击”,并配置“.user.ini”文件:
      open_basedir=/www/wwwroot/wiki.eijux.com/:/tmp/:/usr/bin/bash
      
    4. 访问站点的文章页面,以确定不再有“open_basedir 问题”。
【2022/08/23 17:47:44 验证】


.user.ini”:用于配置“open_basedir”

1、开启“防止跨站攻击”后自动生成。(位于项目根目录)

2、关闭“防止跨站攻击”自动删除;

3、不能被上传覆盖,只能在服务器修改;


可以通过宝塔面板来修改宝塔面板:修改“.user.ini”.png

页面显示无格式

访问所有页面都只有文字,没有格式。如图:

    MediaWiki:“$wgScriptPath”设置导致页面显示格式不对.png

解决:

  1. 检查本地网络环境;
  2. 检查系统配置文件(“LocalSettings.php”)中的“$wgScriptPath[2]”配置。
    • $wgScriptPath”的配置与 MediaWiki 安装路径不匹配,会导致无法获取 MediaWiki 的各个脚本,从而出现上述情况。

SVG[3] 缩略图问题

初次上传 svg(矢量图)时,遇到了几个问题,基本上都是由于配置不完全导致。

“无法创建临时缩略图文件”

上传“.svg”文件后:

1、页面提示:“生成缩略图出错:无法创建临时缩略图文件”。

2、在“特殊:文件列表”中查看文件时,提示:“Warning: symlink() has been disabled for security reasons in /www/wwwroot/wiki.eijux.com/includes/media/SvgHandler.php on line 280”。

解决: 在服务器的 PHP 配置中,将禁用的函数“symlink()[4]”删除。


“sh: convert: command not found”

生成缩略图处提示:sh: convert: command not found

Mediawiki 支持 SVG 图像呈现:如果启用,SVG 图像可以像其他图像文件一样使用 —— 它们将自动呈现为 PNG 文件,并根据需要动态缩略图。

MediaWiki 默认没有安装任何“转换器”(Converter[5]),以下选择安装“NativeSvgHandler[6]”。

解决:

  1. 下载“NativeSvgHandler”到服务器(“./extensions/”)中;
    • 注意修改所有者及读写权限。
  2. 配置启动(LocalSettings.php 中):
    wfLoadExtension( 'NativeSvgHandler' );
    

再于网页刷新,svg 缩略图显示正常。


“Warning: is_executable(): open_basedir ……”

PHP 错误信息为:Warning: is_executable(): open_basedir restriction in effect. File(/bin/bash) is not within the allowed path(s): (/www/wwwroot/wiki.eijux.com/:/tmp/) in /www/wwwroot/wiki.eijux.com/includes/shell/Command.php on line 311

解决: 参考:“#open_basedir 问题”。

参考

  1. 位于:“/www/wwwlogs/wiki.eijux.com.error.log”。
  2. 手册:LocalSettings#$wgScriptPath
  3. 参考:Manual:Image administration#SVG
  4. 默认情况下,是被禁用的函数。可以使用“宝塔面板快速设置。”
  5. Converter("ImageMagick", "ImagickExt", "sodipodi", "inkscape", "batik", "rsvg", and "imgserv")均需单独安装。
  6. 插件“NativeSvgHandler”:将 SVG 文件直接发送至客户端以进行客户端渲染。
    参考:Extension:NativeSvgHandler