【问题标题】:PHP chmod() and umask() not functioningPHP chmod() 和 umask() 不起作用
【发布时间】:2012-01-31 06:43:20
【问题描述】:
$url = 'http://gdata.youtube.com/feeds/api/playlists/blabla';
$fp = fopen($url, 'r'); 
$buffer='';
if ($fp) {
while (!feof($fp))
$buffer .= fgets($fp, 1024);
fclose($fp);
$buff=stripslashes($buffer);
$old = umask(0); 
file_put_contents("si.xml", $buff);
chmod("si.xml", 0777);
umask($old);

我收到的警告是

Warning: file_put_contents(si.xml) [function.file-put-contents]: failed to open stream
Warning: chmod() [function.chmod]: Permission denied 

我什至手动将整个目录文件权限设置为 777,但没有用。
我在 Windows 上使用 filezilla

【问题讨论】:

  • Permission denied 表明你没有权限这样做。
  • 正如 xdazz 所说。您没有权限

标签: php chmod umask


【解决方案1】:

他们正在工作,他们在这里无关紧要:-)

目录的写权限(顺便说一句,777 是个坏主意)授予您在该目录中创建、重命名和删除文件的权利。

如果你想写入已经存在的文件,重要的是文件的权限,而不是目录。

从错误来看,si.xml 似乎已经存在,并且它受到您的保护。使用目录的写权限,您可以先删除那里的文件,然后重新创建它,但您最好修复文件本身的权限。

【讨论】:

  • 据我所知,我的意思是我检查了使脚本工作的所有可能性的方式。如果你能建议/写下更正的代码,我会很高兴
  • @pbvamsi:你想通过 emailz 吗?
  • @pbvamsi:如果要创建/删除/重命名文件,则需要对该目录的写入权限(很可能使用 chmod 设置一次)。您需要对您创建的文件具有写入权限才能覆盖它们(在创建之前使用 umask 和/或在创建之后使用 chmod)。用于 chmod/umask 的值完全取决于您是否希望访问权限仅限于一个用户、一个组或每个人。
  • @Ignacio Vazquez-Abrams 是的,请...我会等...bvkrishna.sgs@gmail.com
  • @paxdiablo no si.xml 不存在,我同意 777 在目录上是个坏主意。但是在最后阶段它会创建一个 XML 如果已经存在它应该覆盖更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
  • 2020-07-12
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
相关资源
最近更新 更多