我设置了一个hitcounter,这样每次有人进入我的网站时,7个不同侧边栏中的一个会加载。有一个名为counter.php的文件,它写入一个名为hitcounter.txt的文本文件。所有对文件的引用似乎都是相对的,但当我将它们移动到我的新主机的新目录时,我得到了这个错误,而不是一个快乐的点击计数器:
警告:fopen(hitcounter.txt)[ function.fopen ]:无法打开流: / usr / local / apache / sites中的权限被拒绝/MY-SITE/counter.php 在线 5
Counter.php全部粘贴在下面,第5行是fopen的第一个引用,counter.php和hitcounter.txt都有775个权限,与旧主机上的权限相同。
我做错了什么?我显然错过了一些非常简单和令人尴尬的事情,所以在帮助我的时候随意给我任何蔑视或虐待。
<?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);
}
}
?>
答案 0 :(得分:2)
它可能与权限有关。将其设置为777,看看会发生什么。如果apache以自己的权限运行并且不是你的一部分可能是原因,但我有几个建议:
<强>更新强>
没有什么比这更好的例子了:
<?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);
?>
答案 1 :(得分:1)
首先,您不需要775权限。您需要在hitcounter.txt上拥有666权限。 PHP文件可以是644。
Web服务器可能不是该组的成员,具体取决于主机,因此您需要为“Everyone”组授予写入权限。
文件夹需要“执行”位,但个别文件不需要,因为操作系统不会执行这些操作。
所以你知道,775是:所有者,团体,每个人
所有者=读取+写入+执行
组=读取+写入+执行
每个人=阅读+执行
666表示
所有者=读取+写入
群组=读取+写入
每个人=读取+写入
644表示
所有者=读取+写入
群组=阅读
每个人=阅读
答案 2 :(得分:0)
尝试设置777的权限。如果这不起作用,可能是您的主机不允许在服务器上进行文件操作
答案 3 :(得分:0)
检查include_path
以确保其中包含句点(当前目录)。不知道为什么它不会,但你永远不知道你的主人是否胜利。您可以使用ini_get
include path
ini_get('include_path');
除此之外,您可能需要不同的文件权限。这是一个有用的网站,描述了file permissions上的大量信息。