fopen() - 权限被拒绝 - 尽管拥有正确的权限(据我所知)

时间:2012-09-06 12:22:41

标签: php apache fopen chmod

最近移动了服务器并尝试设置所有内容。我的memcache类写日志,这是开发所需要的东西。

编辑:运行Ubuntu 12.04的服务器。

webroot是 的/ var / WWW /的public_html

日志文件位于/ var / www / logs /

以下是目录权限

-rw-r--r-- 1 root root       1415 Sep  6 11:53 default
drwxrwxr-x 2 root webmasters 4096 Sep  6 12:48 logs
drwxrwxr-x 8 root webmasters 4096 Sep  6 12:32 public_html

以下是/ var / www / logs

的权限
-rw-rw-r-- 1 root webmasters 116103 Sep  6 13:02 access.log
-rw-rw-r-- 1 root webmasters  16094 Sep  6 12:48 error.log
-rw-rw-r-- 1 root webmasters      0 Sep  6 12:48 memcache.log
-rw-rw-r-- 1 root webmasters   9861 Sep  6 13:02 php_log.log

浏览器的文件是/var/www/public_html/index.php

-rw-rw-r-- 1 root webmasters 5660 Sep  6 01:51 /var/www/public_html/index.php

索引包括/var/www/public_html/includes/cache.php

-rw-rw-r-- 1 root webmasters 4602 Sep  6 12:47 /var/www/public_html/includes/cache.php

小组成员:

grep 'webmasters' /etc/group
webmasters:x:1002:sftp_chris,www-data

我甚至尝试将/ logs和/memcache.log更改为chmod 777。

不太明白为什么会这样,因为你可以看到php正在将其日志文件写入/logs/php.log而没有问题。

有什么想法吗?我非常困惑。

我想也许它与php-suhosin有关但在那里找不到任何东西。

功能:

function write_to_log($string){

    $file = '/var/www/memcache.log';
    $fh = fopen($file, 'a');
    $contents = @fread($fh, filesize($file));
    $stringData = $contents."[".date('H.i:s d-m-y')."] ".$string;
    fwrite($fh, $stringData);
    fclose($fh);
}

1 个答案:

答案 0 :(得分:3)

您写信给/var/www/memcache.log,而不是/var/www/logs/memcache.log,您显示了权限。

(为什么在写入之前阅读日志?)