PHP is_writeable错误返回不可写


PHP is_writable error returns not writable

我有这个代码

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

$destination是一个与../subdir/dir/currectDir/类似的相对路径,我已经检查过,权限是777,但上面的代码返回"destination is not writive",我不明白为什么。有人能帮我吗?感谢

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

  • 由于open_basedir的限制,该目录位于PHP可以写入的路径之外
  • 目录位于以只读方式安装的驱动器上
  • 目录设置了不可变或仅追加属性
  • 文件系统已损坏

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

echo getcwd();

就在is_writeble()调用之前。

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

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

我不能发表评论,所以我必须在这里做出回应,但看起来路径(顺便说一句,你发布的是相对路径,而不是绝对路径)是不正确的-你尝试过吗

var_dump(file_exists($destination));

首先,确定您是否正在为目录查找正确的位置?