PHP:打开并读取目录,其中包含pdf文件


PHP:open and read directory, which contains pdf files

Am使用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);
}
}

这里的问题是那行:while(($fileName=readdir($dir)) !==false)

简单地查看一下该函数的php文档,就会发现失败的原因:

string readdir ([ resource $dir_handle ] )需要目录句柄作为参数,而不是文件系统路径。因此,行应该为:while(($fileName=readdir($dh)) !==false)$dh是保存目录句柄的变量,您在打开文件夹时在上面几行返回了该句柄。

这是脚本实现过程中非常常见和典型的问题。我们都会犯这样的错误。没什么好担心的。但您应该从中学习的是:监视您的http服务器错误日志文件这些问题在那里被指出,你实际上可以在那里阅读你正在处理的问题,通常还可以阅读问题发生在哪个文件的哪一行如果不监控错误日志文件,就无法认真开发php

使用下面的代码工作正常。

 $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)