【发布时间】:2015-03-18 21:29:25
【问题描述】:
我无法根据生产服务器的克隆设置开发服务器。我们使用 CMS,它的某些脚本似乎存在权限问题。为了深入了解它,我们设置了一个 PHP 脚本来测试权限,并进入终端比较它的发现。
我们的测试脚本如下
//try one of the essential folders of the CMS
$path= '[our_base_dir]/html/cms/content'
echo $path.' is'.(!is_writable($path) ? ' NOT' : '').' writable.<br/>';
打印出来的
[our_base_dir]/html/cms/content is NOT writable.
但是,当进入航站楼时,我不明白为什么会这样。这是它的输出:
$ getfacl content
# file: content
# owner: cchapman
# group: cchapman
user::rwx
user:apache:rw-
group::rwx
mask::rwx
other::r-x
和
$ grep 'cchapman' /etc/group
cms:x:510:cchapman,apache
cchapman:x:512:cms,apache
我相信apache 用户是需要具有写入权限的用户,而cms 和cchapman 用户只是文件所有者,具体取决于它们的创建方式。无论如何,这三个应该能够根据组权限读取和写入彼此的文件。
这在文件级别和目录级别都是一样的。我唯一的想法是在文件级别处理 Apache 用户的方式有问题。会是这样吗?或者还有什么会赋予不同的访问权限?
【问题讨论】:
-
和 absolute 路径
/html/cms/content是否正确?正确如:不是./html/cms/content,而是和realpath('/html/cms/content');一样?因为作为绝对路径,/html/cms/content对我来说没有多大意义 -
同时检查apache是否没有使用
www-datauser -
添加到 cchpman 组后是否重启了 apache?
-
@Marek 我们确实尝试重新启动 apache,但似乎没有任何变化
-
我的意思是
httpd.conf,或者任何加载的conf。可能有User apache设置,也可以有Group设置。
标签: php apache terminal file-permissions