我希望PHP检查我在变量中输入的选择目录,并同时输出文件夹,文件,权限(可写或不可写)。
这是我的PHP代码:
<?php
$directorySelection = '../app/';
if (file_exists($directorySelection)) {
if ($existence = opendir('../app')) {
while (false !== ($files = readdir($existence))) {
if ($files != "." && $files != ".." && $files != ".DS_Store") {
echo '<table>';
echo '<tr>';
echo '<td style="width: 90%; padding: 10px;">'. $files .'</td>';
if (is_writable($files)) {
echo '<td><span class="label label-success">Writable</span></td>';
} else {
echo '<td><span class="label label-danger">Not writable</span></td>';
}
echo '<td>'. substr(sprintf('%o', fileperms($files)), -4) . '</td>';
echo '</tr>';
echo '</table>';
}
}
closedir($existence);
}
} else {
echo '<div class="alert alert-warning" role="alert">Application Directory doesn\'t exist <a role ="button" data-toggle="alertInfo" placement="left" title="Application Directory" data-content="Please set your Application Directory, so that the installer can check for folder, files and there Permissions "> <span class="glyphicon glyphicon-info-sign floatRight"></span></a></div>';
}
?>
我得到的结果:
答案 0 :(得分:2)
问题在于您的$files
变量,因为它不包含完整路径,只包含名称,而是从CWD检查。
您的代码正在根据CWD测试文件权限,但您的文件不在CWD中。所以在$files
前面加上目录的名称,例如
if ($files != "." && $files != ".." && $files != ".DS_Store") {
$filepath = $directorySelection . $files;
....
if (is_writable($filepath)) {
.....
substr(sprintf('%o', fileperms($filepath)), -4)
它应该正确读取文件。如果需要名称,请使用$files
;对于采用文件名的函数,请使用$filepath
。
(内部代码未显示为不混乱)