php file_put_contents功能不起作用

时间:2011-01-02 04:35:27

标签: php file file-upload

为什么file_put_contents拒绝为以下代码工作?

$f = file_put_contents("files/r.js", "Some text here");

if ($f) print 1;
else print 0;

5 个答案:

答案 0 :(得分:42)

这可能是许可问题

目录/files是否已编码为777?有时,如果没有足够的权限,php将不允许您访问目录。我不知道空白错误。

尝试查看是否有足够的权限,如果没有,则将其设置为777并尝试。

答案 1 :(得分:3)

您是使用文件系统上的完整路径还是尝试使用URI?我认为这个PHP函数希望你在文件系统上找到文件时给出路径。

相对路径应该没问题。

您可能需要确保该文件存在且其权限设置为777.有时我发现仅将目录权限设置为777是不够的,但该文件也必须已存在。

答案 2 :(得分:1)

我们经历过这种情况,需要一种解决方法(无论方法,权限和此处提到的任何其他内容)。当所有其他修复失败时,我们发现它可以链接到SELinux创建的限制。

答案 3 :(得分:0)

是因为SELINUX。

您可以使用此命令将文件夹标记为 httpd_sys_rw_content_t 类型,以允许写入该文件夹。

semanage fcontext -a -t httpd_sys_rw_content_t '/files(/.*)?'; restorecon -RF '/files/'

答案 4 :(得分:-1)

如果您正在使用Windows,以下解决方案在运行php 5.5.38的Windows 10上完美适用于我

如果您在Windows / IIS上遇到此问题,请尝试以下操作:

  1. 转到您要写入的文件夹并右键单击它,然后选择属性。
  2. 选择安全选项卡
  3. 点击修改
  4. 点击添加
  5. 点击高级
  6. 点击立即查找
  7. 从用户列表中选择IUSR并单击确定
  8. 再次单击“确定”。
  9. IUSR将显示在标有“用户名组”
  10. 的顶部框中
  11. 选择IUSR并在“BATCH权限”列表视图中授予必要的权限。
  12. 点击“应用”,然后就完成了。
  13. 对于不同版本的Windows,步骤可能略有不同。这也适用于ASP.NET,但我认为您添加的用户是网络用户(NETWORK AND OR NETWORK SERVICE用户)以及IUSR。