PHP is_writable错误返回不可写

时间:2013-11-27 10:27:24

标签: php permissions directory

我有这段代码

if(is_writable($destination)){ 
  print "destination is writable"; 
}
else { 
 print "destination is not writable"; 
}

$destination是一个相对路径,如../subdir/dir/currectDir/,我检查过,权限是777,但上面的代码返回“目标不可写”,我不明白为什么。有人能帮我吗?感谢

2 个答案:

答案 0 :(得分:3)

除了权限之外,目录可能无法写入的原因有很多。其中一些是:

  • 由于open_basedir限制
  • ,目录位于PHP能够写入的路径之外
  • 目录位于以只读方式挂载的驱动器上
  • 目录具有不可变或附加属性集
  • 文件系统已损坏

但是,我在这种情况下的猜测是你使用的路径不正确。尝试运行

echo getcwd();

在你的is_writable()调用之前。

它会告诉你PHP脚本运行的当前目录,从那里你应该能够计算出正确的相对路径。如果从命令行运行PHP脚本,它的路径将是当前目录的路径,而不是通过Apache等Web服务器运行,它通常是public_html或httpdocs目录。它可能在早期的脚本执行中也已被更改。

您还可以指定绝对路径(例如/ home / youruser / public_html / subdir / dir / currectDir)

答案 1 :(得分:0)

我无法发表评论,所以我必须在这里回复,但看起来路径(你发布了一条相对路径,顺便说一句绝对路径)是不正确的 - 你试过吗

var_dump(file_exists($destination));

首先,确定您是否在寻找适合您目录的地方?