Есть папка со вложенными папками. В конечных лежат файлы, ссылки(пути) на которые надо записать в файл и файл этот должен лежать в конечной папке.
Есть функция, которая рекурсивно проходит по папкам и записывает пути в файл.
function build($dir) {
foreach (scandir($dir) as $node) {
if ($node == '.' || $node == '..') continue;
if (is_dir($dir . DIRECTORY_SEPARATOR . $node)) {
build($dir .DIRECTORY_SEPARATOR . $node);
} else {
$dirname = dirname($dir . DIRECTORY_SEPARATOR . $node).DIRECTORY_SEPARATOR;
if ($node !== "index.txt"){
var_dump($dirname.$node);
$idxFile = $dirname.'index.txt';
file_put_contents($idxFile, $dirname.$node. "\n",FILE_APPEND);
}
}
}
}
В коде можно увидеть var_dump который выводит путь к текущему файлу в браузер перед записью его в файл.
Магия начинается на моменте записи этого пути в файл. Магия заключается в том, что пути записываются по два раза.
Причем если в папке лежат несколько файлов, то запись пройдет сначала по каждому, а потом еще раз. Т.е. если будет в папке 1.txt , 2.bat, 3.dll, то запишется вот так
1.txt
2.bat
3.dll
1.txt
2.bat
3.dll
а в браузере отобразится по одному разу.
Вопрос: как исправить так, чтобы записывалось в файл по одному разу?
З.Ы. через консоль скрипт отрабатывает правильно и запись идет по одному разу