PHP:无法下载文件(“404未找到”消息)

PHP:无法下载文件(“404未找到”消息),php,file,fopen,Php,File,Fopen,我正在一个客户的网站上工作,我没有为此编写代码。我无法下载文件 它是一个用户可以下载课程文件的子域。 网站文件包含在文件夹“courses”(根目录)中 用于显示可下载课程文件的文件包含在中 “courses/displayfiles.php” 可下载文件包含在“课程/下载文件夹”中的文件夹中。在此文件夹中,每个用户都有自己的 名称为用户id的文件文件夹 displayfiles.php:以下代码成功显示登录用户可以下载的所有文件: $path = "downloadfolder/" .

我正在一个客户的网站上工作,我没有为此编写代码。我无法下载文件

它是一个用户可以下载课程文件的子域。 网站文件包含在文件夹“courses”(根目录)中

  • 用于显示可下载课程文件的文件包含在中 “courses/displayfiles.php”
  • 可下载文件包含在“课程/下载文件夹”中的文件夹中。在此文件夹中,每个用户都有自己的 名称为用户id的文件文件夹
displayfiles.php:以下代码成功显示登录用户可以下载的所有文件:

  $path = "downloadfolder/" . $_SESSION['userId'] . "/";
  $files = array();
  $output = @opendir($path) or die("$path could not be found");

  while ($file = readdir($output)) {
    if (($file != "..") and ($file != ".")) {
      array_push($files, $file);
    }
  }
  closedir($output);
  sort($files);

  foreach ($files as $file) {
    echo '<a class="imtext" href="downloadfolder/' . $_SESSION['userId'] . '/' . $file . '/">' . $file . '</a><br/>';
  }

然而,当我点击一个文件时,我得到了一个404NotFound错误。这是怎么回事?

您必须查看页面的webroot所在位置、生成列表的php文件所在位置以及文件所在位置

生成的链接与生成链接的php文件相关,该文件可能与浏览器中的URL不对应。我将尝试使此链接相对于webroot(请注意前导斜杠!)

echo'
';

如果猜测的解决方案不起作用,请提供生成此链接的页面的当前URL和一个生成的链接,这样我们可以更好地帮助您。

谢谢您的建议,但这不起作用。我编辑了我的帖子(请参见上文)。我在href中添加了文档根,但仍然出现404错误。这是怎么回事?最好的方法是检查生成的链接。可能是去错地方了。检查是否存在所有相应的目录。我将href更改为以下内容:
href=“http://.”服务器['http\u主机]./downloadfolder/'.$\u会话['courseId'.]./'.$file./'>
这肯定是文件所在的位置。我仍然得到一个404错误。这怎么可能呢?如果您确定一切正常,并且文件确实存在,那么请查看以下内容:。也许这个链接会有帮助。
foreach ($files as $file) {
            echo '<a class="imtext" href="http://'.$_SERVER['HTTP_HOST']. '/downloadfolder/' . $_SESSION['courseId'] . '/' . $file . '/">' . $file . '</a><br/>';
      }
echo '<a class="imtext" href="/courses/downloadfolder/' . $_SESSION['userId'] . '/' . $file . '/">' . $file . '</a><br/>';