有什么方法可以用scandir循环文件夹?我面临一个问题,当循环使用

首先我声明了获取文件夹的变量,并将文件获取到一个数组中。请看下面

  $DOCROOT = $_SERVER['DOCUMENT_ROOT'];
  $dir    = $DOCROOT . '/php/pagamentos/resources/pagamentos';
  echo ($dir);
  $folder = array_diff(scandir($dir), array('.', '..'));

而我有以下数组要循环。

array(4) {
  [2]=>
  string(33) "BMEPS_out22002508200201095005.txt"
  [3]=>
  string(33) "BMEPS_out22002508200204112009.txt"
  [4]=>
  string(33) "BMEPS_out22002508200204125012.txt"
  [5]=>
  string(33) "BMEPS_out22002508200205063000.txt"
}

然后我用下面的代码开始循环数组:

foreach ($folder as $file) {

    $fp = fopen($file, "r") or die("Unable to open file!");

    echo $file;


    fclose($fp);
}

但是在做完这些之后,我得到了以下错误。

Warning: fopen(BMEPS_out22002508200204112009.txt): failed to open stream: No such file or directory in /var/www/html/php/pagamentos/index.php on line 40
Unable to open file!

解决方案:

你缺少一个完整的文件路径。当你扫描一个dir时,你使用 $dir = $DOCROOT . '/php/pagamentos/resources/pagamentos'; 但当你调用fopen时,你只是使用一个文件名。你必须提供一个完整的路径来代替。例如,当你只调用一个文件名时,脚本会尝试在执行脚本的同一个目录下打开一个文件。

foreach ($folder as $file) {
    $fullPath = $DOCROOT . '/php/pagamentos/resources/pagamentos/' . $file;
    //or
    $fullPath = $dir . '/' . $file;
    //now you use $fullPath instead just $file
}

在你只调用一个文件名的情况下 脚本会尝试打开一个文件 在执行脚本的同一个目录里.

给TA打赏
共{{data.count}}人
人已打赏
未分类

Python从子目录动态导入函数。

2022-9-13 14:29:31

未分类

msmtp无法通过OVH SMTP发送邮件到根地址。

2022-9-13 14:40:23

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索