Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
apache/php创建文件,但不允许同一页面编辑文件_Php_Linux_Apache - Fatal编程技术网

apache/php创建文件,但不允许同一页面编辑文件

apache/php创建文件,但不允许同一页面编辑文件,php,linux,apache,Php,Linux,Apache,我在测试中遇到了一个问题(并在prod上尝试了它,no go),我用一个php脚本创建了一个文件,并在该文件中放入了一些数据 我已经使用winSCP将“所有者、组、其他”的权限设置为R、W、X(我还不太支持命令行) 我能看到的是,脚本能够创建文件(我已经删除了,并且每次都正确地重新创建了文件),但是完全相同的脚本无法写入文件,我得到了一个权限错误。 “无法打开流:权限被拒绝” 这是我正在使用的脚本,它在windows中工作,但现在在linux上,没有了 有什么想法吗 $type='get';

我在测试中遇到了一个问题(并在prod上尝试了它,no go),我用一个php脚本创建了一个文件,并在该文件中放入了一些数据

我已经使用winSCP将“所有者、组、其他”的权限设置为R、W、X(我还不太支持命令行)

我能看到的是,脚本能够创建文件(我已经删除了,并且每次都正确地重新创建了文件),但是完全相同的脚本无法写入文件,我得到了一个权限错误。 “无法打开流:权限被拒绝”

这是我正在使用的脚本,它在windows中工作,但现在在linux上,没有了

有什么想法吗

$type='get'; $count_my_page = ("list".$counterDate.".txt"); if(!file_exists($count_my_page)){ $fp=fopen($count_my_page, "w"); $putArray=array($type=>'1'); $putJson=json_encode($putArray); fputs($fp, $putJson); fclose($fp); } else { $hits = file($count_my_page); if(empty($hits)){ $putArray=array($type=>'1'); $putJson=json_encode($putArray); } else { $putArray=json_decode($hits[0], true); if(!array_key_exists($type, $putArray)){ $putArray[$type] = '1'; } else { $hit=$putArray[$type]; $putArray[$type]++; } } $putJson=json_encode($putArray); $fp=fopen($count_my_page, "w"); fputs($fp, $putJson); fclose($fp); } $type='get'; $count_my_page=(“列表“$counterDate.”.txt”); 如果(!file_存在($count_my_page)){ $fp=fopen($count\u my\u page,“w”); $putArray=array($type=>'1'); $putJson=json_encode($putArray); FPUT($fp,$putJson); fclose($fp); }否则{ $hits=文件($count\u my\u page); 如果(空($hits)){ $putArray=array($type=>'1'); $putJson=json_encode($putArray); }否则{ $putArray=json_decode($hits[0],true); 如果(!array_key_存在($type,$putArray)){ $putArray[$type]=“1”; }否则{ $hit=$putArray[$type]; $putArray[$type]++; } } $putJson=json_encode($putArray); $fp=fopen($count\u my\u page,“w”); FPUT($fp,$putJson); fclose($fp); }
创建文件需要对目录的写入权限(这可能是您使用winscp设置的权限?)

但是修改文件需要对文件本身具有写权限。
要向Apache授予此类权限,您可能必须在创建完文件后使用该函数

我想,像这样的事情也许可以:

chmod($count_my_page, 0666);
6=4(读)+2(写)。
你不需要给执行权

这有用吗


我认为它在windows上起作用是因为Apache以用户(或管理员)身份运行,或者是因为windows的权限系统更为宽松


编辑:有关Linux下权限的更多详细信息,请参阅(引用):

有三种特定权限 在类Unix系统上应用于 每班:

  • 读取权限,授予读取文件的能力。设置时 对于目录,此权限无效 授予读取名称的能力 目录中的文件数(但不到) 了解更多关于 包括文件类型、大小、, 所有权、权限等)
  • 写入权限,授予修改文件的能力。设置时 对于目录,此权限无效 授予修改条目的能力 在目录中。这包括 创建文件、删除文件和 重命名文件
  • 执行权限,授予执行文件的能力。这 必须为可执行文件设置权限 二进制文件(例如,编译的C++) 程序)或shell脚本(用于 例如,一个Perl程序),以便 允许操作系统运行 他们。为目录设置时,此 权限授予执行以下操作的能力: 遍历其树以访问 文件或子目录,但看不到 目录中的文件(除非 读取已设置)


您也可以从中获得乐趣,但我总是更喜欢在必要时调用chmod(并且只有在必要时:我更喜欢不给予太多权限——这样更安全)——而且如果我没记错的话,umask可能会在某些服务器上出现一些问题创建文件需要对目录的写入权限(这可能是您使用winscp设置的?)

但是修改文件需要对文件本身具有写权限。
要向Apache授予此类权限,您可能必须在创建完文件后使用该函数

我想,像这样的事情也许可以:

chmod($count_my_page, 0666);
6=4(读)+2(写)。
你不需要给执行权

这有用吗


我认为它在windows上起作用是因为Apache以用户(或管理员)身份运行,或者是因为windows的权限系统更为宽松


编辑:有关Linux下权限的更多详细信息,请参阅(引用):

有三种特定权限 在类Unix系统上应用于 每班:

  • 读取权限,授予读取文件的能力。设置时 对于目录,此权限无效 授予读取名称的能力 目录中的文件数(但不到) 了解更多关于 包括文件类型、大小、, 所有权、权限等)
  • 写入权限,授予修改文件的能力。设置时 对于目录,此权限无效 授予修改条目的能力 在目录中。这包括 创建文件、删除文件和 重命名文件
  • 执行权限,授予执行文件的能力 必须为可执行文件设置权限 二进制文件(例如,编译的C++) 程序)或shell脚本(用于 例如,一个Perl程序),以便 允许操作系统运行 当设置为目录时 权限授予执行以下操作的能力: 遍历其树以访问 文件或子目录,但看不到 目录中的文件(除非 读取已设置)


您也可以从中获得乐趣,但我总是更喜欢在必要时调用chmod(并且只有在必要时:我更喜欢不给予太多权限——这样更安全)--如果我没记错的话,umask可能在某些服务器上出现了一些问题,这是一个很大的帮助,谢谢。起初我不确定你想把它放在哪里,但我把它移动了一点,直到它刚好落在fpopen下面。不客气:-)(顺便说一句,我也不知道该把它放在哪里,但我通常会在fclose之后调用chmod;那就是