如何检查目录在PHP中是否可写?

时间:2020-03-06 14:29:30  来源:igfitidea点击:

有谁知道我如何检查目录是否可以用PHP编写?

函数" is_writable"不适用于文件夹。 (编辑:它确实有效。请参见接受的答案。)

解决方案

是的,它确实适用于文件夹...。

Returns TRUE if the filename  exists and is writable. The filename argument may be a directory name allowing you to check if a directory is writable.

根据PHP手册,is_writable应该可以在目录上正常工作。

根据is_writable的文档,它应该可以工作,但我们说的是"文件夹",因此这可能是Windows问题。这些评论提出了一种解决方法。

(之前的匆忙阅读使我认为尾部的斜线很重要,但这实际上是针对此工作的)。

stat()

与系统状态非常相似,但是使用PHP。我们要检查的是模式值,就像我们用其他语言(即C / C ++)调用stat一样。

http://us2.php.net/stat

我们可能正在将完整的文件路径发送到is_writable()函数。如果文件在目录中不存在,则is_writable()将返回false。在这种情况下,我们需要检查目录本身并删除文件名。如果这样做," is_writable"将正确告诉我们该目录是否可写。如果$ file包含文件路径,请执行以下操作:

$file_directory = dirname($file);

然后使用is_writable($ file_directory)确定该文件夹是否可写。

我希望这可以帮助别人。

这是代码:)

<?php 

$newFileName = '/var/www/your/file.txt';

if ( ! is_writable(dirname($newFileName))) {

    echo dirname($newFileName) . ' must writable!!!';
} else {

    // blah blah blah
}