我有这个代码
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));
首先,确定您是否正在为目录查找正确的位置?