【发布时间】:2012-07-18 02:05:41
【问题描述】:
我只是在尝试在一个目录中显示所有文件,然后使用 fgets 在它们旁边显示一些信息。我似乎无法让它工作。我现在有点讨厌 php,但我基本上希望它显示一个 tr,每个 tr 有两个 td。一个带有文件名的 td,另一个带有“描述”的 td,这只是我在文件第一部分中放入的一些信息。
<table>
<?php
if ($handle = opendir('desktop/')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$string = "$file";
$searchArray = array("_", ".php");
$replaceArray = array("", "");
$string = str_replace($searchArray,$replaceArray,$string);
$handle = @fopen("desktop/$file", "r");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
echo $buffer;
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
echo "<tr><td><a href=desktop/$file>$string\n</a></td><td>$buffer</td></tr>";
}
}
closedir($handle);
}
?>
</table>
【问题讨论】:
-
有什么问题?你的目录有什么权限?您是否受到文件遍历攻击的保护?
-
警告:readdir(): 5 is not a valid Directory resource in C:\wamp\www\tech\pc.php on line 16 Warning: closedir(): 5 is not a valid Directory resource在 C:\wamp\www\tech\pc.php 第 38 行
-
确认一下,
var_dump($handle)是否显示bool(false)? -
您可能想要包装 href attr 的值。在引号内,作为开始:
<a href=\"desktop/$file\"> -
This answer 似乎暗示资源已经关闭,但我不能说为什么会这样......
标签: php directory filenames fgets