使用PHP在文件夹中添加文件

使用PHP在文件夹中添加文件,php,Php,我有100多个子文件夹 例如: a/b/c/d/e f/g/h m/n k/l/o/p/s/z/x/ .... a/b/c/d/e f/g/h m/n k/l/o/p/s/z/x/ .... 我想在每个文件夹(和每个子文件夹)中添加一个空白文件(index.html)。 我可以用PHP实现吗?如何实现呢?是的,请看一下递归和目录/文件命令 如果需要,只在目录名与a-z等匹配的情况下,取顶部目录向下迭代。然后打开一个名为index.html的文件并保存(或从以前的副本复制)为指定文件夹编写一个函

我有100多个子文件夹

例如:

a/b/c/d/e f/g/h m/n k/l/o/p/s/z/x/ .... a/b/c/d/e f/g/h m/n k/l/o/p/s/z/x/ .... 我想在每个文件夹(和每个子文件夹)中添加一个空白文件(index.html)。
我可以用PHP实现吗?如何实现呢?

是的,请看一下递归和目录/文件命令


如果需要,只在目录名与a-z等匹配的情况下,取顶部目录向下迭代。然后打开一个名为index.html的文件并保存(或从以前的副本复制)

为指定文件夹编写一个函数:

  • 使用文件_exists检查index.html是否存在
  • 如果需要,创建文件
  • 使用scandir读取指定文件夹的内容
  • 检查每个项目是否为文件或文件夹(使用is_dir)
  • 递归地为找到的每个子目录调用自身

您可能需要一个编写文件的好教程:


将文件夹名称保存在一个数组中,并一次使用一个文件进行循环。或者opendir可以为您提供文件夹列表,只需循环并写入文件

使用shell脚本可能更容易:

exec('
  for DIR in $(find . -type d) ; do touch "$DIR/index.html" ; done
');
通过更大的努力:

function scandir_tree($dir) {
    $r = array("$dir");
    foreach (scandir($dir) as $fn) {
        if (is_dir("$dir/$fn") && ($fn[0] != ".")) {
            $r = array_merge($r, scandir_tree("$dir/$fn"));
        }
    }  
    return $r;
}

foreach (scandir_tree(".") as $dir) {
    touch("$dir/index.html");
}

或者如前所述,使用一个单独的命令来阻止Apache生成默认目录列表。

是的,您可以这样做。或者,您可以使用
选项-Index
指令在根目录中添加一个
.htaccess
文件。感谢您的回复。(顺便说一句,我并不懒惰)@mario如果我能用
htaccess
实现这一点,我想会更容易。谢谢,顺便说一句,在PHP中从未做过类似的事情。必须查找这些函数中的几乎每一个,结果证明这一点都不难!:)@米尼纳姆:那只是shell脚本。基本上,
bash
或任何
sh
都可以执行它。为什么还要在PHP中执行它呢。让我们扔掉所有编程语言,转而使用批处理:儿子,你没有贝壳。您需要编写一个手动解决方案。(尽管在
CMD
中有类似的功能)我想我会使用
选项-索引。你能帮个忙吗?我喜欢这段代码,但不知道如何在windows上执行它