有谁知道我怎么能检查,看是否有目录PHP是可写的?
该功能is_writable
不适用于文件夹的工作。 (编辑:它不工作,请参阅接受的答案。)
有谁知道我怎么能检查,看是否有目录PHP是可写的?
该功能is_writable
不适用于文件夹的工作。 (编辑:它不工作,请参阅接受的答案。)
是的,它的文件夹工作....
如果文件存在并且可写则返回TRUE。 文件名参数可以是一个目录名,允许你检查一个目录是可写的。
这是代码:)
<?php
$newFileName = '/var/www/your/file.txt';
if ( ! is_writable(dirname($newFileName))) {
echo dirname($newFileName) . ' must writable!!!';
} else {
// blah blah blah
}
成为所有者/组/世界更具体
$dir_writable = substr(sprintf('%o', fileperms($folder)), -4) == "0774" ? "true" : "false";
和平...
你可能会发送一个完整的文件路径is_writable()
函数。 is_writable()
将返回false,如果该文件不存在目录中。 您需要检查目录本身除去了文件名,如果是这种情况。 如果你这样做, is_writable
将正确地告诉你的目录是否可写与否。 如果$file
包含的文件路径做到这一点:
$file_directory = dirname($file);
然后使用is_writable($file_directory)
以确定该文件夹是可写的。
我希望这可以帮助别人。
根据对is_writable的文件 ,它应该只是工作-但你说的“文件夹”,所以这可能是一个Windows的问题 。 该意见提出一个解决办法 。
(A冲到前面阅读使我觉得结尾的斜杠是重要的,但原来是专门针对此解决)。
我写了一个小脚本(我称之为isWritable.php)检测在同一目录下的脚本是所有目录中,并写入到页面的每个目录是否可写与否。 希望这可以帮助。
<?php
// isWritable.php detects all directories in the same directory the script is in
// and writes to the page whether each directory is writable or not.
$dirs = array_filter(glob('*'), 'is_dir');
foreach ($dirs as $dir) {
if (is_writable($dir)) {
echo $dir.' is writable.<br>';
} else {
echo $dir.' is not writable. Permissions may have to be adjusted.<br>';
}
}
?>
STAT()
就像一个系统的统计,但是在PHP。 要检查什么是模式值,就像你将任何其他通话器统计在其他语言(IE C / C ++)。
http://us2.php.net/stat
根据PHP手册is_writable应在目录上正常工作。
这是我要做的事:
创建一个文件file_put_contents()
和检查返回值,如果是正的(写在字节数),那么你可以继续做你必须做什么,如果是假的话,就不是写
$is_writable = file_put_contents('directory/dummy.txt', "hello");
if ($is_writable > 0) echo "yes directory it is writable";
else echo "NO directory it is not writable";
那么你可以通过取消链接删除虚拟文件()
unlink('directory/dummy.txt');
就我而言, is_writable
返回真实的,但试图写入文件时-生成一个错误。
此代码有助于检查$dir
存在并且是可写的:
<?php
$dir = '/path/to/the/dir';
// try to create this directory if it doesn't exist
$booExists = is_dir($dir) || (mkdir($dir, 0774, true) && is_dir($dir));
$booIsWritable = false;
if ($booExists && is_writable($dir)) {
$tempFile = tempnam($dir, 'tmp');
if ($tempFile !== false) {
$res = file_put_contents($tempFile, 'test');
$booIsWritable = $res !== false;
@unlink($tempFile);
}
}