PHP mkdir不会创建新目录

时间:2015-02-06 17:07:00

标签: php html

我正在尝试创建一个新目录来处理个人资料图片,但每次上传图片时都没有任何反应,因为新目录中没有创建,也没有任何错误。我已经检查了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 {

        }

}         }

2 个答案:

答案 0 :(得分:1)

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

  • 您的if查询无法正常关闭
  • 您的else声明缺少一个braket
  • 您使用@抑制任何错误 - 删除它们!
  • 使用绝对路径而不是相对路径来避免创建目录的位置出错

以下是它应该如何显示的示例:

// 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!');
    }

答案 1 :(得分:0)

尝试添加权限。

mkdir(&#34; / path /&#34;,0755);