我正在编写将disqus注释转换为HashOver系统的代码,并且我有这样的代码:
// $threads is list of threads from disqus api that I cached on disk
foreach ($threads as $thread) {
$dir_name = getSafeThreadName(preg_replace("%^https?://[^/]+%", "", $thread['link']));
$dir = 'threads/' . $dir_name;
if (!is_dir($dir)) {
mkdir($dir);
chmod($dir, 0774);
}
// ...
// $thread_posts are $post that belong to $thread
foreach($thread_posts as $post) {
$xml = new SimpleXMLElement('<comment/>');
// ...
// $name_arr is array of numbers for HashOver comments
$fname = $dir . '/' . implode('-', $name_arr) . ".xml";
$f = fopen($fname, 'w');
fwrite($f, $xml->asXML());
fclose($f);
chmod($fname, 0664);
}
}
它为我的线程中的每个帖子创建了一个目录,该目录由所有者apache:apache
进行读写,并且里面有诸如1.xml
这样的文件,所有者为root:root
为什么root:root
?我怎样才能做到apache:apache
?
编辑:
这不是重复项,我不想将权限从apache:apache
更改为root:root
,可以使用chown
完成,但是我想这样做首先不要将其更改为root:root
,我也想知道为什么将其更改为root:root
。这对我来说似乎是php或apache中的错误,或者对我而言apache中的某些错误配置。我不认为这是代码,因为它只是打开,写入和关闭文件。
答案 0 :(得分:0)
不知道为什么,我想知道,但这可以解决问题:
我已经使用过:
chmod($dir, 0775);
代替:
chmod($dir, 0774);
目录对于其他目录不可执行,并且在创建时将创建该目录中的文件,并由root拥有。很奇怪。