查看“FAQ:MediaWiki”的源代码
←
FAQ:MediaWiki
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:MediaWiki]] == 关于 == <div align="center"><span style="font-weight:bold; font-size:150%;"> [https://www.mediawiki.org/wiki/Manual:FAQ/zh 手册:常见问题] </span></div> == '''open_basedir 问题''' == <span style="color: red; font-size: 110%">'''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</span> [[File:MediaWiki:open_basedir问题.png|800px]] <blockquote> <span style="color: blue; font-size: 120%">'''open_basedir(防止跨站攻击)'''</span> :用于'''将 PHP 所能打开的文件限制在指定的目录树''',以此防止跨目录、跨站的访问。 1、本指令不受安全模式打开或者关闭的影响。 2、当一个脚本试图打开一个文件时,该文件的位置将被检查。 3、当文件在指定的目录树之外时 PHP 将拒绝打开它。 </blockquote> '''解决方案:''' # <span style="color: blue">'''关闭“防止跨站攻击”'''</span>: ## 通过“<span style="color: green">'''宝塔面板'''</span>”关闭:网站 -> 站点设置 -> 网站目录:取消“防止跨站攻击(open_basedir)”。如下图: ##: [[File:宝塔面板:防止跨站攻击(open_basedir).png|600px]] ## 通过“<span style="color: green">'''配置文件'''</span>”关闭:注销如下语句即禁用。 ##: <syntaxhighlight lang="PHP" line highlight="4"> ... phpIniOverride { #php_admin_value open_basedir "/tmp/:/www/wwwroot/wiki.eijux.com/" } ... </syntaxhighlight> ##* 配置文件:位于“<span style="color: green">/www/server/panel/vhost/openlitespeed/detail/wiki.eijux.com.conf</span>”。 # <span style="color: blue">'''配置“open_basedir”'''</span>:通过编辑“<span style="color: blue; font-size: 120%">'''.user.ini'''</span>”文件,添加必要的目录树: #: <syntaxhighlight lang="PHP" line highlight=""> open_basedir=/www/wwwroot/wiki.eijux.com/:/tmp/ </syntaxhighlight> #* '''.user.ini''' 文件:开启“防止跨站攻击”之后自动创建,位于项目根目录,用于配置“open_basedir”。 #* '''open_basedir'''指定的限制是'''路径前缀,而非目录名'''(如:设置“/dir/user”,则“/dir/user”和“/dir/user1”都是可以访问的)。 #** 所以如果要将访问限制在仅为指定的目录,应用斜线结束路径名(如:“/dir/user/”)。 #* 添加 Linux 根目录“<span style="color: blue">'''/'''</span>”,则一定不会再报错,但是“防止跨站攻击”也就没啥意义了。 #**<s>【通过错误信息定位需要的目录实在麻烦!】</s> === '''如何明确需要的目录树?''' === 之前一直想要通过“界面上的错误信息”来找到需要配置到“<span style="color: green">'''open_basedir'''</span>”的“目录树”。 但是,突然想到:“<span style="color: blue">'''服务器的错误日志'''</span>”提供的信息是否更详细、明确? <big>'''步骤:'''</big> # 从服务器上获取站点错误日志:“<span style="color: blue">'''wiki.eijux.com.error.log'''</span>”; #* 位于:“/www/wwwlogs/”。 # 在服务器中利用“open_basedir”筛选错误信息: #: <syntaxhighlight lang="bash" highlight=""> 2022/08/23 15:20:27 [error] 1098830#0: *11213 FastCGI sent in stderr: "PHP message: PHP Warning: file_exists(): 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/CommandFactory.php on line 119PHP message: PHP Warning: file_exists(): 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/CommandFactory.php on line 119PHP message: PHP Warning: file_exists(): 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/CommandFactory.php on line 119PHP message: PHP Warning: file_exists(): 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/CommandFactory.php on line 119" while reading response header from upstream, client: 118.112.56.144, server: wiki.eijux.com, request: "GET /%E7%AB%99%E7%82%B9%E6%97%A5%E5%BF%97 HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-cgi-74.sock:", host: "wiki.eijux.com", referrer: "http://wiki.eijux.com/%E9%A6%96%E9%A1%B5" </syntaxhighlight> #: 可以看出,此处错误信息与“界面上的错误信息”完全不同:'''File(/bin/bash) 不在被允许的路径中。''' #: <syntaxhighlight lang="bash" highlight=""> PHP message: PHP Warning: file_exists(): 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/CommandFactory.php on line 119PHP </syntaxhighlight> # '''确认“待添加目录”的“实际路径”''':因为目录可能是 '''Symlink'''(符号链接); #: 如:上述“'''/bin/bash'''”就是指向“'''/usr/bin/bash'''”的符号链接。 # 开启站点的“防止跨站攻击”,并配置“<big>'''.user.ini'''</big>”文件: #: <syntaxhighlight lang="PHP" line highlight=""> open_basedir=/www/wwwroot/eijux.com/:/tmp/:/usr/bin/bash </syntaxhighlight> # 访问站点的文章页面,以确定不再有“open_basedir 问题”。 <span style="color: blue; font-size: 120%">【2022/08/23 17:47:44 解决】</span> “<span style="color: blue; font-size: 150%">'''.user.ini'''</span>”: 1、开启“防止跨站攻击”后自动生成,关闭“防止跨站攻击”自动删除; 2、不能被上传覆盖,只能在服务器修改; <big>可以通过<span style="color: green">'''宝塔面板'''</span>来修改</big>: [[File:宝塔面板:修改“.user.ini”.png|800px]] == 无法生成avg缩略图 == '''如果要使用第三方的converter,参见[https://www.mediawiki.org/wiki/Manual:Installing_third-party_tools#Image_thumbnailing Image thumbnailing页面]''' * '''描述:''' 上传'''<code>.svg</code>'''文件过后,页面中提示“生成缩略图出错:无法创建临时缩略图文件”,在“特殊页面:文件列表”中查看文件时: '''<code>Warning: symlink() has been disabled for security reasons in /www/wwwroot/wiki.eijux.com/includes/media/SvgHandler.php on line 280</code>'''。 *'''处理:''' 默认安装的PHP一些函数是没有默认开启的。 我们需要的函数是'''<code>symlink()</code>''',则用在PHP的禁用函数中删除该函数即可。 ---- * '''描述:''' 生成缩略图处提示:'''<code>sh: convert: command not found</code>''',PHP错误信息为'''<code>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</code>'''。 * '''处理:''' 先考虑是PHP配置的问题, <pre> PHP错误'''require(): open_basedir restriction in effect”''',即访问脚本不在'''<code>open_basedir</code>'''的限定目录里面,'''<code>open_basedir</code>'''的作用是将php所能打开的文件限制在指定的目录或文件。<br/> </pre> 修改PHP配置文件<code>PHP.ini</code>的<code>open_basedir</code>之后错误依旧,而后一直都盯着<code>open_basedir</code>打转。兜兜转转许久才注意到<code>sh: convert: command not found</code>的提示,想到可能没有配置Svg Converter,从而进一步发现MediaWiki没有默认安装Converter。最后在[https://www.mediawiki.org/wiki/Manual:Image_administration/zh#SVG | 官网手册SVG节]了解到支持信息,相关的Converter("ImageMagick", "ImagickExt", "sodipodi", "inkscape", "batik", "rsvg", and "imgserv")均需单独安装。相较之下,选用了[https://www.mediawiki.org/wiki/Extension:NativeSvgHandler/zh | NativeSvgHandler]扩展(将SVG文件直接发送至客户端以进行客户端渲染)。步骤如下:<br/> # '''下载文件,并将其放置在extensions/文件夹中的NativeSvgHandler目录内。(注意修改所有者及读写权限)''' # '''将下列代码放置在您的LocalSettings.php的底部:'''<code>wfLoadExtension( 'NativeSvgHandler' );</code>'''''' # '''导航至Special:Version,以验证扩展已成功安装。''' 再于网页刷新,svg缩略图显示正常。 * 如果要使用第三方的converter,参见[https://www.mediawiki.org/wiki/Manual:Installing_third-party_tools#Image_thumbnailing<nowiki> Image thumbnailing页面]</nowiki>
返回至“
FAQ:MediaWiki
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息