为什么在此代码中无法使用file_exits?

时间:2016-03-14 13:55:46

标签: php

有人可以告诉我为什么这个PHP代码不起作用?如果file_exists不会产生问题,但它只是运行代码。对不起我的坏(语法)英语,英语不是我的主要语言:)。

$files = glob("../templates/Default/*");

for ($i=0; $i<count($files); $i++) {
    $src = $files[$i];
    $fileName = $src;
    $fileName = str_replace("../templates/Default/", "", $fileName);
    $dirName = $fileName;
    $dest = "../Sites/NewSite1/$fileName";

    if(file_exists($fileName)){
        copy($src, $dest);
        echo $fileName;
    }else{
        $fileName = "../templates/Default/$dirName";
        $fileName = str_replace("$dirName", "$dirName/*", $fileName);
        $dFiles = glob($fileName);
        for ($t=0; $t<count($dFiles); $t++) {
            $src2 = $dFiles[$t];
            copy($src2, $dest);
            echo $src2;
        }

    }   
}

2 个答案:

答案 0 :(得分:1)

如果要检查文件是否存在于尝试将其复制到的目录中,则需要提供file_exists()整个目录路径,因此请执行以下操作:

更改此内容:if (file_exists($fileName)) {

if (file_exists($dest)) {

答案 1 :(得分:0)

这是正确的代码:(它仍然需要一些tweeking)。

$files = glob("../templates/Default/*");

for ($i=0; $i<count($files); $i++) {
    $src = $files[$i];
    $fileName = $src;
    $fileName2 = str_replace("../templates/Default/", "", $fileName);
    $dirName = $fileName2;
    $dest = "../Sites/$websiteName/$fileName2";

    if (!copy($src, $dest)) {
        $fileName3 = "../templates/Default/$dirName/*";
        $dest2 = "../Sites/$websiteName/$fileName2";
        $dFiles = glob($fileName3);

        for ($t=0; $t<count($dFiles); $t++) {
            $src2 = $dFiles[$t];
            $fileName4 = $src2;
            $fileName4 = str_replace("../templates/Default/$dirName/", "", $fileName4);
            mkdir("../Sites/$websiteName/$dirName");
            $dest2 = "../Sites/$websiteName/$dirName/$fileName4";
            copy($src2, $dest2);
        }
    }
}