我设置了一个hitcounter所以,每次有人去我的网站,其中一个7不同的侧栏载荷。有一个文件叫counter.php 写入文本文件被称为hitcounter.txt.所有参考文件似乎是相对的,但当我搬到新目录在我的新主人,我得到这个错误,而不是一个快乐的打击计数器:

警告:fopen(hitcounter.txt)[功能。fopen]:未能开流:权限被拒绝在 /usr/local/apache/sites/MY-SITE/counter.php 上线 5

Counter.php 是贴在其全文如下5行是第一个参考fopen,既counter.php 和hitcounter.txt 有775的权限,相同的,因为他们没有在老旧的主机。

我做错了什么?我显然缺失的东西真的很简单的和令人尴尬,所以随时给我任何蔑视或虐待的同时帮助我。

counter.php:

<?php
    $count_my_page = ("hitcounter.txt");
    $hits = file($count_my_page);
    $hits[0]++;
    $fp = fopen($count_my_page , "w");
    if ($fp) {
        fputs($fp , "$hits[0]");
        fclose($fp);
    }
    if($hits[0]<=1)
        $random_number=0;
    else if($hits[0]>1 && $hits[0]<=2)
        $random_number=1;
    else if($hits[0]>2 && $hits[0]<=3)
        $random_number=2;
    else if($hits[0]>3 && $hits[0]<=4)
        $random_number=3;
    else if($hits[0]>4 && $hits[0]<=5)
        $random_number=4;
    else if($hits[0]>5 && $hits[0]<=6)
        $random_number=5;
    else if($hits[0]>6 && $hits[0]<=7)
        $random_number=6;
    else if($hits[0]>7 && $hits[0]<=8)
        $random_number=7;
    else if($hits[0]>8 && $hits[0]<=9) {
        $random_number=8;
        if($hits[0]==9) {
            $count_my_page=("hitcounter.txt");
            $fp = fopen($count_my_page , "w");
            $hits[0]=0;
            fputs($fp , "$hits[0]");
            fclose($fp);
        }
    }
?>
有帮助吗?

解决方案

首先,你不需要775的权限。你需要666上的权限hitcounter.txt.PHP文件可以644.

该网站服务器可能不是该组的成员,这取决于主机的,所以你需要得到'每个人都'组写信的权限。

"执行"点是需要的文件夹,但不是为单独的文件,因为它们不是正在执行的操作系统。

所以你知道,775是:所有者、组,每个人都

  • Owner=读写+执行

  • 组=读写+执行

  • 每个人都读+执行

666装置

  • Owner=读写

  • 组=读写

  • 每个人都=读写

644装置

  • Owner=读写

  • 组=读

  • 每个人都读

其他提示

它可能与权限。设置为777看看会发生什么。如果apache运用自己的权限并不是你的这个可能原因,但我有几点建议:

  • 使用这/file_get_内容的简单读写!
  • 请使用$random_number=rand(0,8的)或mt_rand(0,8的),如果可能,而不是这些无数的线以及作为奖励摆脱所有的文件阅读书写

祝你好运!

更新

没有什么比一个很好的例子:

<?php 
  $random_number = mt_rand(0,8);
  file_put_contents("hitcounter.txt", $random_number); /* dont know if you still need it */
?>

如果你真的想要(顺便说一句.不是随机的!):

<?php 
  $file = "hitcounter.txt";
  $number = (int)file_get_contents($file);
  $number = ++$number % 9;
  file_put_contents($file, $number);
?>

尝试设置777的权限。如果这不起作用,可能是您的主机不允许在服务器上进行文件操作

检查include_path以确保其中包含句点(当前目录)。不知道为什么它不会,但你永远不知道你的主人是否胜利。您可以使用 ini_get 从PHP脚本打印出include path

ini_get('include_path');

除此之外,您可能需要不同的文件权限。这是一个有用的网站,描述了有关文件权限的大量信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top