mkdir()权限未经更改

时间:2015-08-09 19:52:13

标签: php apache permissions mkdir

我正在使用php创建图像上传功能。

我正在使用vagrant工作在Windows上,一切正常。现在,我搬到了Ubuntu(仍然使用流浪汉)并且脚本不再起作用了。

我创建了两个文件夹,在我上传图像之前,当前只创建了第一个文件夹。

$folder_name = Config::get('PATH_IMAGES') . Session::get('user_id') . '/';
$profile_folder = $folder_name . 'profile/';

// create a folder for the user's images
if (!(is_dir($folder_name) || is_writable($folder_name))) {
    mkdir($folder_name, 0777);
}           

if (!(is_dir($profile_folder) || is_writable($profile_folder))) {
    mkdir($profile_folder, 0777, true);
} 

这将创建一个具有以下权限的文件夹:

drwxrwxr-x 2 user user 4096 Aug 9 21.33 folder_name

不是drwxrwxrwx!

现在,如果我手动更改权限(chmod -R 777 folder_name),我会得到以下结果:

drwxrwxrwx 2 user user 4096 Aug 9 21.33 folder_name

再次运行我的脚本,将创建第二个目录。用第二个目录重复这个过程我能够最终上传图像。

到目前为止我尝试了什么:

$folder_name = Config::get('PATH_IMAGES') . Session::get('user_id') . '/';
$profile_folder = $folder_name . 'profile/';

// create a folder for the user's images
if (!(is_dir($folder_name) || is_writable($folder_name))) {
    umask(0); <------
    mkdir($folder_name, 0777);
}           

if (!(is_dir($profile_folder) || is_writable($profile_folder))) {
    umask(0); <------
    mkdir($profile_folder, 0777, true);
}

这并没有解决问题。跑步(umask();)返回18.
在mkdir()之后运行chmod()也没有帮助。

我的php用户是www-data 我的apache用户是&#39;用户&#39;。
没有错误消息。

我不知道在哪里寻找解决方案。我会非常感谢任何帮助。

编辑:

把它全部放在一个陈述中也不能解决问题。

    $folder_name = Config::get('PATH_IMAGES') . Session::get('user_id') . '/profile/';

    // create a folder for the user's images            
   if (!(is_dir($folder_name) || is_writable($folder_name))) {
        mkdir($folder_name, 0777, true);            
   }

1 个答案:

答案 0 :(得分:0)

chmod($folder,0755)

之后使用mkdir()(或0777)