为什么file_put_contents拒绝为以下代码工作?
$f = file_put_contents("files/r.js", "Some text here");
if ($f) print 1;
else print 0;
答案 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上遇到此问题,请尝试以下操作:
对于不同版本的Windows,步骤可能略有不同。这也适用于ASP.NET,但我认为您添加的用户是网络用户(NETWORK AND OR NETWORK SERVICE用户)以及IUSR。