反不工作的时候,我把它移到另一个服务器
-
10-07-2019 - |
题
我设置了一个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的权限。如果这不起作用,可能是您的主机不允许在服务器上进行文件操作