PHP mkdir没有';t创建新目录


PHP mkdir doesn't make new directories

我正试图创建一个新目录来处理个人资料图片,但每次上传图像时,都不会发生任何事情,因为新目录中没有创建,也没有任何错误。我已经查看了Apache错误日志,但没有注意到任何与我最近的代码有关的错误。。。

这是我的代码示例

    //profile image upload script
    if (isset($_FILES['profile_pics'])) {
        if (((@$_FILES["profile_pics"] ["type"] == "image/jpeg" || (@$_FILES["profile_pics"] ["type"] == "image/png") || (@$_FILES["profile_pics"] ["type"] == "image/gif")) && (@$_FILES["profile_pics"] ["size"] < 1048576)) ) // LESS THAN ONE MEGABYTE
        {
            $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
            $rand_dir_name = substr(str_shuffle($chars), 0, 15);
            mkdir("userdata/profile_pics/$rand_dir_name");


        else {
        }

}}

您的PHP中有多个错误,您确定在apache日志中没有看到任何致命错误吗?

  • 您的if查询未正确关闭
  • 您的else语句缺少制动器
  • 您正在使用@抑制任何错误-删除它们
  • 使用绝对路径而不是相对路径,以避免在创建目录时出错

下面是一个应该如何显示的示例:

// array of valid image types
$valid = array( 'image/jpeg', 'image/png', 'image/gif' );
if (isset($_FILES['profile_pics'])) {
    // if the file type is in the valid array and the size is less than 1MB
    if ( in_array($_FILES['profile_pics']['type'], $valid)
         && ($_FILES["profile_pics"]["size"] < 1048576) )
    {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
        $rand_dir_name = substr(str_shuffle($chars), 0, 15);
        mkdir($_SERVER['DOCUMENT_ROOT'] . "/userdata/profile_pics/$rand_dir_name");
    } else {
        print( 'too big or not an image.' );
    }
}

编辑

您还应该检查mkdir响应。。像这样:

    $ok = mkdir($_SERVER['DOCUMENT_ROOT'] . "/userdata/profile_pics/$rand_dir_name");
    if( !$ok )
    {
        print('error creating directory, check your permissions');
    } else {
        print('created directory successfully!');
    }

尝试添加权限。

mkdir("/path/",0755);