我的mkdir()函数告诉我我没有权限

时间:2013-12-03 22:28:25

标签: php upload mkdir permission-denied

我正在尝试创建一个存储所有用户个人资料图片的目录。每当我点击上传按钮时,它会说: 警告:mkdir():第60行/Applications/XAMPP/xamppfiles/htdocs/testing/account_settings.php中的权限被拒绝

这是mkdir()代码:

$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$rand_dir_name = substr(str_shuffle($chars), 0, 15);
mkdir("userdata/profile_pics/$rand_dir_name");

我尝试更改权限:

mkdir("userdata/profile_pics/$rand_dir_name", 0777);

我仍然被拒绝。我做错了什么?

PS:完整代码:

<?php
if (isset($_FILES['profilepic'])) {
    if (((@$_FILES['profilepic'] ['type']=='image/jpeg') || (@$_FILES['profilepic']     ['type']=='image/png') || (@$_FILES['profilepic'] ['type']=='image/gif')) &&     (@$_FILES['profilepic'] ['size'] < 1048576)) {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        $rand_dir_name = substr(str_shuffle($chars), 0, 15);
        mkdir("userdata/profile_pics/$rand_dir_name", 0777);
    } else {
    echo "Upload failed";
    }
}
?>

上传表单:

<form action="" method="POST" enctype="multipart/form-data">
    <img src="<?php echo $profile_pic; ?>" width="70"><br>
    <input type="file" name="profilepic"><br>
    <input type="submit" name="uploadpic" value="Upload Image">
</form>

2 个答案:

答案 0 :(得分:1)

命令

mkdir("userdata/profile_pics/$rand_dir_name", 0777);

只会为新创建的目录设置权限。您需要更改要在其中创建文件夹的目录的权限。

答案 1 :(得分:1)

首先尝试cd进入你的个人资料pics目录(并确保你有写权限),然后在那里创建目录。

chdir('userdata/profile_pics'); // Make sure this is writable
mkdir($rand_dir_name, 0755);

除非您想让系统上的任何用户全局写入文件夹,否则chmod 755应该足以允许Web服务器上传到目录中。