使用PHP

时间:2016-04-25 15:38:18

标签: php

我试图将文件夹移动到其他文件夹,包含所有文件。两个文件夹都在根目录中。尝试了很多方法,总是没有结果。 这是我最近的尝试:

$source = "template/"
$dest = "projects/"
function copyr($source, $dest){
    if (is_link($source)) {
        return symlink(readlink($source), $dest);
    }

    if (is_file($source)) {
        return copy($source, $dest);
    }
    if (!is_dir($dest)) {
        mkdir($dest);
    }
    $dir = dir($source);
    while (false !== $entry = $dir->read()) {
        // Skip pointers
        if ($entry == '.' || $entry == '..') {
            continue;
        }
        copyr("$source/$entry", "$dest/$entry");
    }
    $dir->close();
    return true;
}

需要专业的一瞥告诉我,我在哪里弄错了?

修改

抱歉错误的标签。 问题是 - 什么都没发生。没有任何东西被复制。没有错误消息。没有任何反应。 文件结构:

enter image description here

1 个答案:

答案 0 :(得分:1)

我建议尝试执行以下操作

  1. 你如何运行抄写员?您是在浏览器中打开页面还是在命令行中运行脚本?如果您在浏览器中打开页面,这可能是权限,路径(相对而非绝对)和未显示但已记录的错误的问题。

  2. 使用绝对文件夹路径而不是相对路径。例如/var/www/project/template

  3. realpath()函数应用于所有路径并检查(输出)结果。如果路径错误(文件夹不存在,分隔符错误等),您将从函数中获得空结果。

    如果您在Windows上运行脚本,请务必使用DIRECTORY_SEPARATOR而不是/。我现在无法检查/是否适用于Windows,但这可能是一个问题。例如

    copyr($source.DIRECTORY_SEPARATOR.$entry", $dest.DIRECTORY_SEPARATOR.$entry);
    
    1. 检查警告和错误。如果您没有获得许可,您应该收到类似的警告
    2.   

      PHP警告:mkdir():权限被拒绝

      如果禁用警告和错误,则可能需要启用警告和错误。例如,尝试使用名称明显错误,并检查是否收到任何错误消息。

      1. 尝试使用其中一个答案的测试解决方案。例如xcopy函数。

      2. 尝试添加调试消息或逐步在调试器中运行脚本。检查发生了什么,执行了什么等。您可以在任何操作员附近添加调试输出,例如(只是一个想法):

        回声'创建目录'。$ name。' ......&#39 ;; MKDIR($名); echo(is_dir($ name)?'创建':'失败')。PHP_EOL;