Topic on User talk:星耀晨曦

怎么保证目录可以被读写呢?

42
AndyPKU (talkcontribs)

可以在这边讨论么?

星耀晨曦 (talkcontribs)

你是什么系统的。

AndyPKU (talkcontribs)

centos7

星耀晨曦 (talkcontribs)

ls -l 上传目录,看看权限

AndyPKU (talkcontribs)

上传目录是什么意思啊?

AndyPKU (talkcontribs)

-rw-r--r--  1  501 games   4697 Dec  9 07:19 api.php

-rw-r--r--  1  501 games 131511 Dec  9 07:19 autoload.php

drwxr-xr-x  2  501 games   4096 Dec  9 07:19 cache

-rw-r--r--  1  501 games    116 Dec  9 07:19 CODE_OF_CONDUCT.md

-rw-r--r--  1  501 games   3595 Dec  9 07:19 composer.json

-rw-r--r--  1  501 games    102 Dec  9 07:19 composer.local.json-sample

-rw-r--r--  1  501 games  19419 Dec  9 07:19 COPYING

-rw-r--r--  1  501 games  10924 Dec  9 07:19 CREDITS

drwxr-xr-x  8  501 games   4096 Dec  9 07:19 docs

drwxr-xr-x 31  501 games   4096 Jan 12 13:53 extensions

-rw-r--r--  1  501 games     95 Dec  9 07:19 FAQ

-rw-r--r--  1  501 games   3735 Dec  9 07:19 Gruntfile.js

-rw-r--r--  1  501 games 867797 Dec  9 07:19 HISTORY

drwxr-xr-x  2  501 games   4096 Jan 18 14:18 images

-rw-r--r--  1  501 games   7705 Dec  9 07:19 img_auth.php

drwxr-xr-x 66  501 games   4096 Dec  9 07:19 includes

-rw-r--r--  1  501 games   1623 Dec  9 07:19 index.php

-rw-r--r--  1 root root      20 Jan  5 14:11 info.php

-rw-r--r--  1  501 games   3663 Dec  9 07:19 INSTALL

-rw-r--r--  1  501 games   2025 Dec  9 07:19 jsduck.json

drwxr-xr-x  6  501 games   4096 Dec  9 07:19 languages

-rw-r--r--  1  501 games   1965 Dec  9 07:19 load.php

-rw-r--r--  1 root root    6587 Jan 19 00:48 LocalSettings.php

drwxr-xr-x 17  501 games  12288 Dec  9 07:19 maintenance

drwxr-xr-x  4  501 games   4096 Dec  9 07:19 mw-config

-rw-r--r--  1  501 games   4059 Dec  9 07:19 opensearch_desc.php

-rw-r--r--  1  501 games   3274 Dec  9 07:19 phpcs.xml

-rw-r--r--  1  501 games  12013 Dec  9 07:19 profileinfo.php

-rw-r--r--  1  501 games   1529 Dec  9 07:19 README

-rw-r--r--  1  501 games  16790 Dec  9 07:19 RELEASE-NOTES-1.30

drwxr-xr-x  5  501 games   4096 Dec  9 07:19 resources

drwxr-xr-x  2  501 games   4096 Dec  9 07:19 serialized

drwxr-xr-x  6  501 games   4096 Dec  9 07:19 skins

-rw-r--r--  1  501 games   1703 Dec  9 07:19 StartProfiler.sample

drwxr-xr-x  9  501 games   4096 Dec  9 07:19 tests

-rw-r--r--  1  501 games   1087 Dec  9 07:19 thumb_handler.php

-rw-r--r--  1  501 games  21335 Dec  9 07:19 thumb.php

-rw-r--r--  1  501 games  12244 Dec  9 07:19 UPGRADE

drwxr-xr-x 22  501 games   4096 Dec  9 07:20 vendor

-rw-r--r--  1 root root  124569 Jan  6 01:46 期货.jpg

-rw-r--r--  1 root root   48546 Jan 15 09:40 期货百科.png

星耀晨曦 (talkcontribs)

暂且不论上传目录,你整个文件夹的权限都很糟糕。web目录应该只对web服务器可读,上传目录和缓存目录(如果启用了文件缓存)应该对web服务器可写。

找出web服务器的运行用户,然后返回上级目录执行

chown -R <user>:<user> <mediawikiPath>
AndyPKU (talkcontribs)

是不是LocalSettings.php所在的文件夹就应该是web服务器的运行目录啊?

星耀晨曦 (talkcontribs)

LocalSettings.php同级目录和所有的次级目录都是web目录

AndyPKU (talkcontribs)

这条命令执行以后出错:

-bash: syntax error near unexpected token `<'

星耀晨曦 (talkcontribs)

。。。把<user>替换成运行web服务器的用户,把<mediawikiPath>替换成web目录

AndyPKU (talkcontribs)

-rw-r--r--  1 root root   4697 Dec  9 07:19 api.php

-rw-r--r--  1 root root 131511 Dec  9 07:19 autoload.php

drwxr-xr-x  2 root root   4096 Dec  9 07:19 cache

-rw-r--r--  1 root root    116 Dec  9 07:19 CODE_OF_CONDUCT.md

-rw-r--r--  1 root root   3595 Dec  9 07:19 composer.json

-rw-r--r--  1 root root    102 Dec  9 07:19 composer.local.json-sample

-rw-r--r--  1 root root  19419 Dec  9 07:19 COPYING

-rw-r--r--  1 root root  10924 Dec  9 07:19 CREDITS

drwxr-xr-x  8 root root   4096 Dec  9 07:19 docs

drwxr-xr-x 31 root root   4096 Jan 12 13:53 extensions

-rw-r--r--  1 root root     95 Dec  9 07:19 FAQ

-rw-r--r--  1 root root   3735 Dec  9 07:19 Gruntfile.js

-rw-r--r--  1 root root 867797 Dec  9 07:19 HISTORY

drwxr-xr-x  2 root root   4096 Jan 18 14:18 images

-rw-r--r--  1 root root   7705 Dec  9 07:19 img_auth.php

drwxr-xr-x 66 root root   4096 Dec  9 07:19 includes

-rw-r--r--  1 root root   1623 Dec  9 07:19 index.php

-rw-r--r--  1 root root     20 Jan  5 14:11 info.php

-rw-r--r--  1 root root   3663 Dec  9 07:19 INSTALL

-rw-r--r--  1 root root   2025 Dec  9 07:19 jsduck.json

drwxr-xr-x  6 root root   4096 Dec  9 07:19 languages

-rw-r--r--  1 root root   1965 Dec  9 07:19 load.php

-rw-r--r--  1 root root   6617 Jan 22 00:19 LocalSettings.php

drwxr-xr-x 17 root root  12288 Dec  9 07:19 maintenance

drwxr-xr-x  4 root root   4096 Dec  9 07:19 mw-config

-rw-r--r--  1 root root   4059 Dec  9 07:19 opensearch_desc.php

-rw-r--r--  1 root root   3274 Dec  9 07:19 phpcs.xml

-rw-r--r--  1 root root  12013 Dec  9 07:19 profileinfo.php

-rw-r--r--  1 root root   1529 Dec  9 07:19 README

-rw-r--r--  1 root root  16790 Dec  9 07:19 RELEASE-NOTES-1.30

drwxr-xr-x  5 root root   4096 Dec  9 07:19 resources

drwxr-xr-x  2 root root   4096 Dec  9 07:19 serialized

drwxr-xr-x  6 root root   4096 Dec  9 07:19 skins

-rw-r--r--  1 root root   1703 Dec  9 07:19 StartProfiler.sample

drwxr-xr-x  9 root root   4096 Dec  9 07:19 tests

-rw-r--r--  1 root root   1087 Dec  9 07:19 thumb_handler.php

-rw-r--r--  1 root root  21335 Dec  9 07:19 thumb.php

-rw-r--r--  1 root root  12244 Dec  9 07:19 UPGRADE

drwxr-xr-x 22 root root   4096 Dec  9 07:20 vendor

-rw-r--r--  1 root root 124569 Jan  6 01:46 期货.jpg

-rw-r--r--  1 root root  48546 Jan 15 09:40 期货百科.png

这个命令执行以后,我再执行ll的命令,得到以上的结果。。

星耀晨曦 (talkcontribs)

你用root用户来运行web服务器的?我觉得不是。你用apache?

AndyPKU (talkcontribs)

好像是吧。但是我的确是用ssh登陆root的啊。。

apache,是啊。。

不好意思,我其实搞不清楚这几个概念,我就是跟着指引走然后安装的mediawiki,我其实都不懂centos系统。。

AndyPKU (talkcontribs)

我没有修改过权限啊。安装完mediawiki的时候,默认的权限就是这样啊。

星耀晨曦 (talkcontribs)

事实上,必须修改文件权限来保证网站的安全性和可用性。

AndyPKU (talkcontribs)

为什么调整一个上传文件的权限这么难啊。。。?

AndyPKU (talkcontribs)

我其实就想马上就能够上传文件,然后供用户下载。但是看到mediawiki上面的一大堆手册的内容……我也无法判断出哪些是直接有效的方式。。。

星耀晨曦 (talkcontribs)

web服务器指的是类似apache、nginx、iis这样的软件,不是服务器本身。打开apache的配置文件,查找User字段,后面跟着的就是运行用户。

AndyPKU (talkcontribs)

哦哦?这个我知道。。

我想知道User是不是我在网站上注册的用户名啊?

AndyPKU (talkcontribs)

我用的的确是apache。。配置文件。。。我不知道在哪里看。。。

星耀晨曦 (talkcontribs)

不是,二者不是一个概念。一个是服务器端上面的用户,一个是网站的用户。

AndyPKU (talkcontribs)

那我在服务器上。。。除了root以外,我不知道还有什么其他用户。。。

星耀晨曦 (talkcontribs)

配置文件一般在/etc/httpd/httpd.conf

AndyPKU (talkcontribs)

我要怎样设定上传目录?我要怎样保证上传目录可以被用户所读写呢?

星耀晨曦 (talkcontribs)

事实上,最简单的方法就是chmod -R 777 <webPath>。让所有用户可读写你的web目录,但相应也有安全问题。

AndyPKU (talkcontribs)

还是会出现

『无法创建目录“mwstore://local-backend/local-public/b/ba”』这样的错误

星耀晨曦 (talkcontribs)

你修改了$wgUploadDirectory的值吗

AndyPKU (talkcontribs)

// Create a local backend with a null lock manager

$wgFileBackends[] = array(

       'name'        => 'local-backend',

       'class'       => 'FSFileBackend',

       'lockManager' => 'nullLockManager',

       'containerPaths' => array(

               'local-public'  => "{$wgUploadDirectory}",

               'local-thumb'   => "{$wgUploadDirectory}/thumb",

               'local-transcoded' => "{$wgUploadDirectory}/transcoded",

               'local-deleted' => $wgDeletedDirectory,

               'local-temp'    => "{$wgUploadDirectory}/temp",

       ),

       'fileMode'    => 0644,

);

// Define a standard file repository that uses the local backend defined before

$wgLocalFileRepo = array (

       'class'             => 'LocalRepo',

       'name'              => 'local',

       'directory'         => $wgUploadDirectory,

       'scriptDirUrl'      => $wgScriptPath,

       'scriptExtension'   => $wgScriptExtension,

       'url'               => $wgUploadBaseUrl ? $wgUploadBaseUrl . $wgUploadPath : $wgUploadPath,

       'hashLevels'        => $wgHashedUploadDirectory ? 2 : 0,

       'thumbScriptUrl'    => $wgThumbnailScriptPath,

       'transformVia404'   => !$wgGenerateThumbnailOnParse,

       'deletedDir'        => $wgDeletedDirectory,

       'deletedHashLevels' => $wgHashedUploadDirectory ? 3 : 0,

       'backend'           => 'local-backend',

这个算不算?

星耀晨曦 (talkcontribs)

再发一遍上传目录(默认images)的权限。

AndyPKU (talkcontribs)

[root@VM_0_7_centos images]# ll

total 4

-rwxrwxrwx 1 root root  0 Jan 18 14:18 readme

-rwxrwxrwx 1 root root 84 Dec  9 07:19 README

[root@VM_0_7_centos images]#

星耀晨曦 (talkcontribs)

不知道是什么情况,你试着把上面你发的自定义配置注释掉。

AndyPKU (talkcontribs)

注释了以后,然后呢?

星耀晨曦 (talkcontribs)

还是不能上传吗

AndyPKU (talkcontribs)

太奇怪了,居然可以了。可是我并没有设定上传路径啊。。它怎么知道我上传到哪个文件夹下?

星耀晨曦 (talkcontribs)

默认上传到网站根目录下面的images文件夹下面。事实上,只要启用$wgEnableUploads = true;上传功能并确保上传目录可被web服务器写就可以上传了。

AndyPKU (talkcontribs)

文件不是直接堆在images文件夹下啊,而是在下面的子文件夹里面。好难找啊。。。

星耀晨曦 (talkcontribs)

这是因为方便管理文件。一堆文件在同一级目录也有点问题。

AndyPKU (talkcontribs)

很奇怪,我都不知道为什么我之前却失败了。

AndyPKU (talkcontribs)

这个怎么说?

AndyPKU (talkcontribs)

刚刚设定的时候好像有个用户名叫sammy的,但是我从来没有登陆过啊。。