Php 反赢';当我将它移动到另一台服务器时,它无法工作

Php 反赢';当我将它移动到另一台服务器时,它无法工作,php,file-io,deployment,fopen,Php,File Io,Deployment,Fopen,我设置了一个hitcounter,这样每当有人访问我的站点时,就会加载7个不同的边栏中的一个。有一个名为counter.php的文件,它写入名为hitcounter.txt的文本文件。所有对文件的引用似乎都是相对的,但当我将它们移动到新主机的新目录时,我得到了这个错误,而不是一个愉快的点击计数器: 警告:fopen(hitcounter.txt)[function.fopen]:无法打开流:在/usr/local/apache/sites/MY-SITE/counter.php在线5 Count

我设置了一个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权限,与旧主机上的权限相同

我做错了什么?很明显,我错过了一些非常简单和尴尬的事情,所以在帮助我的时候,请随意给我任何蔑视或辱骂

counter.php:
首先,您不需要775权限。您需要对hitcounter.txt拥有666个权限。PHP文件可以是644

web服务器可能不是组的成员,具体取决于主机,因此您需要授予“Everyone”组写入权限

文件夹需要“执行”位,但单个文件不需要,因为操作系统不执行这些文件

所以你知道,775是:所有者,团体,所有人

  • 所有者=读+写+执行

  • 组=读+写+执行

  • 每个人=读取+执行

666意味着

  • 所有者=读+写

  • 组=读+写

  • 每个人=读+写

644意味着

  • 所有者=读+写

  • 组=读取

  • 所有人=阅读


首先,您不需要775权限。您需要对hitcounter.txt拥有666个权限。PHP文件可以是644

web服务器可能不是组的成员,具体取决于主机,因此您需要授予“Everyone”组写入权限

文件夹需要“执行”位,但单个文件不需要,因为操作系统不执行这些文件

所以你知道,775是:所有者,团体,所有人

  • 所有者=读+写+执行

  • 组=读+写+执行

  • 每个人=读取+执行

666意味着

  • 所有者=读+写

  • 组=读+写

  • 每个人=读+写

644意味着

  • 所有者=读+写

  • 组=读取

  • 所有人=阅读


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

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

请检查您的
包含路径
,以确保其中包含句点(当前目录)。不知道为什么不会,但你永远不知道你的主人是不是王者。您可以使用以下方法从PHP脚本打印出
包含路径


除此之外,您可能需要不同的文件权限。这是一个有用的网站,介绍了有关的许多信息。

请检查您的
包含路径,以确保其中包含句点(当前目录)。不知道为什么不会,但你永远不知道你的主人是不是王者。您可以使用以下方法从PHP脚本打印出
包含路径


除此之外,您可能需要不同的文件权限。这是一个有用的网站,介绍了有关的许多信息。

它可能与权限有关。设置为777,看看会发生什么。如果apache使用自己的权限运行,并且不属于您的权限范围,这可能是原因,但我有几点建议:

  • 使用file\u put\u contents/file\u get\u contents进行简单的读/写操作
  • 如果可能的话,请使用$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 */
?>

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


它可能与权限有关。设置为777,看看会发生什么。如果apache使用自己的权限运行,并且不属于您的权限范围,这可能是原因,但我有几点建议:

  • 使用file\u put\u contents/file\u get\u contents进行简单的读/写操作
  • 如果可能的话,请使用$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 */
?>

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



检查两个文件的所有者和组(特别是组)。检查两个文件的所有者和组(特别是组)。非常感谢。你们都很好地回答了我的问题,但克里斯是最快的!谢谢。你们都很好地回答了我的问题,但克里斯是最快的+1-file_put/file_get命令确实使文件处理容易得多+1-file_put/file_get命令确实使文件处理容易得多
<?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);
?>