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

Sea*_*ney 59 php directory permissions

有谁知道如何检查目录是否可以在PHP中写入?

该功能is_writable不适用于文件夹.(编辑:它确实有效.请参阅接受的答案.)

DGM*_*DGM 92

是的,它适用于文件夹....

如果文件名存在且可写,则返回TRUE.filename参数可以是目录名,允许您检查目录是否可写.

  • 诀窍是你不能指定你真正想要测试的文件夹中尚不存在的*文件* - 只需指定文件夹即可. (27认同)

Irf*_*ENS 18

这是代码:)

<?php 

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

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

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

    // blah blah blah
}
Run Code Online (Sandbox Code Playgroud)


小智 6

更具体的所有者/团体/世界

$dir_writable = substr(sprintf('%o', fileperms($folder)), -4) == "0774" ? "true" : "false";
Run Code Online (Sandbox Code Playgroud)

和平...

  • 这个功能应该改进一下。现在,对于像“0777”这样的权限,它将返回 false。 (2认同)

小智 5

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

$file_directory = dirname($file);
Run Code Online (Sandbox Code Playgroud)

然后用于is_writable($file_directory)确定文件夹是否可写.

我希望这可以帮助别人.