使用TCPDF
创建pdf文件。每个用户都会获得一个不同的文件夹。
这是路径名:$_SERVER['DOCUMENT_ROOT'].'/bandymas/pdfDocuments/'.$_SESSION["userSession"]
。文件创建没有问题。
现在我需要查看已创建文件的列表并使其可用于打开。
问题是,我的页面崩溃,我看不到列表。
$dir='/'.$_SERVER['DOCUMENT_ROOT'].'/bandymas/pdfDocuments/'.$_SESSION['userSession'].'/';
if(is_dir($dir)){
if($dh=opendir($dir)){
echo "My documents list:";
while(($fileName=readdir($dir)) !==false){
echo "<a href=".$fileName."> view</a>","\n";
}
close($dh);
}
}
答案 0 :(得分:1)
这里的问题是:while(($fileName=readdir($dir)) !==false)
简单了解php documentation of that function指出事情失败的原因:
string readdir ([ resource $dir_handle ] )
要求目录句柄作为参数,而不是文件系统路径。所以行应该是:while(($fileName=readdir($dh)) !==false)
。 $dh
是保存目录句柄的变量,在打开文件夹时,您返回了几行。
这是脚本实现的一个非常常见和典型的问题。我们都犯了这样的错误。没什么好担心的。但是你应该从中学到的是:监控你的http服务器错误日志文件。这些问题在那里被指出,你实际上可以读取那里你正在处理什么问题并且通常还在哪个文件中出现该问题的精确行。 如果不监视错误日志文件,就无法认真开发php。
答案 1 :(得分:0)
使用下面的代码工作得很好。
$dir='/'.$_SERVER['DOCUMENT_ROOT'].'/bandymas/pdfDocuments/'.$_SESSION['userSession'].'/';
if (is_dir($dir)){
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
}
closedir($dh);
}
}
您使用了 close($dh)
而不是 closedir($dh)