在unix环境中使用php将int写入.txt文件,该文件需要根权限

在unix环境中使用php将int写入.txt文件,该文件需要根权限,php,unix,file-io,file-permissions,Php,Unix,File Io,File Permissions,好的,现在这让我完全困惑,我不明白为什么这个脚本不能工作,基本上我正在尝试用php将一行数据写入一个.txt文件 以下是脚本中重要的部分: set_include_path('/etc/apache2/rewrite/'); if($_GET['type']=="14"){ //video is documentary $file = '/etc/apache2/rewrite/Documentaries.txt'; $line= clean_

好的,现在这让我完全困惑,我不明白为什么这个脚本不能工作,基本上我正在尝试用php将一行数据写入一个.txt文件 以下是脚本中重要的部分:

    set_include_path('/etc/apache2/rewrite/');
    if($_GET['type']=="14"){ //video is documentary
         $file = '/etc/apache2/rewrite/Documentaries.txt';
         $line= clean_url($content[0]['title']) . " " . $content[0]['content_id'] ."\n";
         file_put_contents($file, $line, FILE_APPEND);

            echo "inseted into documentaries <br>" . $line;
    }else if ($_GET['type']=="17"){//video is a talk
         $file = '/etc/apache2/rewrite/Talks.txt';
         $line= clean_url($content[0]['title']) . " " . $content[0]['content_id'] ."\n";
         file_put_contents($file, $line, FILE_APPEND);
            echo "inseted into talks";

    }else if($_GET['type']=="15"){//video is debate
         $file = '/etc/apache2/rewrite/Debates.txt';
         $line= clean_url($content[0]['title']) . " " . $content[0]['content_id'] ."\n";
         file_put_contents($file, $line, FILE_APPEND);
                            echo "inseted into debates";
   }
if语句中的
echo
也会被回显,但是由于某种原因,在任何文件中都没有修改任何内容,我似乎不知道我已经给了脚本写和执行权限,但似乎仍然无法使其正常工作。。我不确定发生了什么,因为我在其他脚本中使用了类似的逻辑,没有任何问题。如果我在我的终端上宣誓,我会非常感谢任何帮助 谢谢 布伦丹


*更新*由于@SyntaxLAMP提醒我检查错误日志,我没有正确的文件权限

好的,这是php文件的权限

-rwxrwxrwx 1 root root 9202 Jan 25 07:48 update_untagged.php
以及我试图写入的三个文件的权限

-rw-r--r-- 1 root root      7 Jan 25 05:05 Debates.txt
-rw-r--r-- 1 root root 110691 Jan 25 07:16 Documentaries.txt
-rw-r--r-- 1 root root  45747 Jan 25 05:05 Talks.txt

它们都有相同的权限,所以我不明白为什么这仍然不起作用。对此,我们非常感谢您提供的任何帮助。您需要向用户提供脚本作为对这些文件的访问而运行。您可以这样为每个人提供访问权限:

chmod 666 Debates.txt Documentaries.txt Talks.txt
或者将所有者设置为脚本作为什么运行(可能是www数据):

编辑:


需要明确的是,除非有正当理由,否则不要向所有人提供访问权限,只需将所有者更改为脚本所运行的任何内容都会安全得多。

是否有任何错误?你是否打开了错误日志记录?我看不出这是通过html表单。。。我甚至没想过要检查日志。。。brbOkay是的,当尝试打开文件时,我收到一个权限被拒绝的错误。。。有没有办法以root身份运行从html访问的php脚本?由于脚本已具有-rwxrwxyyou可能需要为运行PHP脚本的任何用户提供对文件的访问权限,而不仅仅是对脚本的访问权限。@SyntaxLAMP只是在更新。如果文件没有这些权限,请检查更新是否已存在?如果不是的话,我该怎么感谢他们呢。。。脚本本身是受登录/密码保护的,只有我可以访问。adin现在就是这个意思吗。。。如上所述,我的理由是该脚本允许我对apache重写模块所需的内容和.txt文件进行分类。。。我真的想不出另一种方法来做到这一点,尽管我知道我目前的解决方案并没有因为不给每个人提供访问权限而变得强硬,我的意思是chown方法比chmod方法更安全。如果此服务器仅由您使用,这并不是一个真正的问题,但是如果它是一个共享服务器,并且您不希望其他人能够编辑文件或脚本,那么您就不希望向每个人授予写入权限(chmod 666就是这样做的)。服务器仅通过ssh终端访问,但在未来的某个时候,这将是一个实时网站。这应该是我在启动站点之前要解决的问题吗?只要它不是共享服务器(即多人拥有ssh访问权限,而您不信任他们),就可以了。
chmod 666 Debates.txt Documentaries.txt Talks.txt
chown www-data Debates.txt Documentaries.txt Talks.txt