【问题标题】:PHP variable for file name in fopen(). File name can not be empty errorfopen() 中文件名的 PHP 变量。文件名不能为空错误
【发布时间】:2016-09-19 08:15:13
【问题描述】:

我有一个循环,将 php 服务器中的每个文件显示为链接。单击该链接将使用fopen打开文件,如下所示:

  <?php
  echo"<ol>";
  if ($handle = opendir('saves/')) {
      while (false !== ($entry = readdir($handle))) {
          if ($entry != "." && $entry != "..") {
              echo '<li style"display:block"><a href="#codeword">'.$entry.'</a></li><br>';


    }
}
closedir($handle);
  } 
  echo"</ol>";
  echo'<div id="codeword">';
  $file = $entry;
  $f = fopen($entry, "r") or exit("Unable to open file!");
  // read file line by line until the end of file (feof)
  while(!feof($f))
  {
    echo fgets($f)."<br />";
  }

  fclose($f);
  echo"</div>";



  ?>

但是当我运行它时,我得到了错误

fopen() [function.fopen]: 文件名不能为空

我尝试回显$entry 而不是fopen,它按预期显示。所以问题可能是文件的路径。我应该使用什么文件路径。 提前致谢!

【问题讨论】:

  • 错误信息是准确的。这不是路径问题,会导致“找不到文件”错误。
  • 那还能是什么。我确信正确的文件名正在发送到 div。 @arkascha
  • 我对此表示怀疑。锚点指的是href="#codeword"。里面没有no 文件名。出现问题是因为您犯了在单个文件中编写多个逻辑部分的老错误。不。使用一种逻辑创建列表,一种处理点击。
  • 我试图这样做,因为我不确定如何将变量发送到另一个文件。例如,如果我使用 ajax。 @arkascha
  • 因此,与其弄清楚 http get 请求是如何完成的,不如将其搁置一旁,然后声称一切正常?嗯……

标签: php fopen filepath


【解决方案1】:

正如您在 fopen() http://php.net/manual/en/function.fopen.php 的 php 文档中看到的,您的第一个参数是您的文件名。

也许您的值 $entry 为 null 或为空。

【讨论】:

  • 一开始我就是这么想的,但我试着在 div 中回显它,它是确切的文件名。所以它不是空的。
  • 这根本不是答案。这可能是一条评论,尽管除了 OP 在问题中已经解决的显而易见的问题之外,它没有说明任何内容。
  • 你检查$entry的类型了吗?
  • 你试过这个print_r($_FILES); 吗?
【解决方案2】:

在您发布的代码中,$entry 将始终为false(如果它进入while)或undefined(如果它没有),因为while 循环将永远不会结束,直到它是false

【讨论】:

  • 这是不正确的。一旦文件夹被读到最后,循环就会结束。除此之外......为什么无限循环会影响变量的内容?而且...错误是在那个循环下面的代码行中抛出的,那么循环怎么可能是无限的呢?
  • 这个循环对我来说很好。所以我认为问题不存在。
  • @arkascha 循环 while(false !== ($entry = readdir($handle))) 只会在 $entry 设置为 false 时结束。
  • @Eiko 没错。这将发生在文件夹中没有更多条目要读取的那一刻。但是你是对的,这将$entry 设置为false
  • @arkascha 这就是 Vicente 在这里所说的。因为稍后,Niki 想要打开一个名为 $entry 的文件(=== false)。
猜你喜欢
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
  • 2012-05-24
  • 2018-07-30
  • 1970-01-01
  • 1970-01-01
  • 2022-10-04
  • 1970-01-01
相关资源
最近更新 更多