[英]Doctrine: always tells me the database isn't in sync after using two custom mapping types
[英]PHP Code always tells me that the directory isn't empty
下面的代码需要读取目录uploads /,但他总是告诉我该目录不为空,即使该目录完全为空。
<?php
$dir = "uploads/";
echo (count(glob("$dir/*")) === 0) ? 'Empty' : 'Not empty';
?>
这段代码中是否有错误或任何错误,还是我发疯了?
更新的代码
<?php
echo (count(glob("uploads/*")) === 0) ? 'Empty' : 'Not empty';
?>
整页代码更新
<?php
if (array_key_exists('error', $_GET)) {
echo '<div class="galleryError">That image could not be found, we're sorry!</div>';
} elseif (array_key_exists('unknownerror', $_GET)) {
echo '<div class="galleryError">There went something wrong</div>';
} else {
echo '';
}
if ($handle = opendir('uploads/')) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
echo "<div class='imgbox'><a href='fullscreen.php?token=$entry'><img src='$submap$gallery$entry' class='boximg'></a><p class='boxname'>$entry<br /><a href='?view&token=$entry'><small>View this image</small></a></p></div>";
}
}
closedir($handle);
}
//以上所有方法都有效,但随后我们在这里有了这个孤独的代码,它拒绝工作。
echo (count(glob("uploads/*")) == 0) ? 'Empty' : 'Not empty';
?>
glob
默默地失败了。 我无法告诉您为什么,文件系统访问通常与权限相关,但是可能还有其他因素-它甚至在文档中表示功能部分取决于您的服务器环境...
在某些系统上,不可能区分空匹配和错误。
当有一个glob
错误则返回false
-和count(false) === 1
(也记录),所以一点也不奇怪,人们陷入混乱的状况时,他们忽略了这些检查。 如果您真的不在乎错误,则可以使用简写三元运算符进行内联错误检查,确保始终传递一个数组以进行count
从而使其表现出预期的效果:
$isEmpty = count(glob("uploads/*")?:[]) === 0;
这仍然不能回避的事实得到该目录没有被阅读,虽然-你试过打印水珠的输出,当你必须在目录中的文件? 我想那也很无聊。 以下内容是什么? :
var_dump(is_readable('./uploads'));
以下输出是否与您预期的工作目录匹配? :
echo realpath('uploads');
FYI在调试时使用var_dump
,而不是注释中建议的print_r
它会为您提供有关实际需要的变量/类型/结构/引用等的更多详细信息。
总结-要考虑的事情:
服务器上正在运行什么操作系统 ? PHP在哪种模式下运行? 它是否在SuPHP / FastCGI或类似环境下运行。 什么用户拥有./uploads
目录,对其具有什么权限?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.