2010-11-09 2 views

ответ

16

Попробуйте это:

$old_umask = umask(0); 
mkdir($create_path, 0777); 
umask($old_umask); 

http://php.net/umask

+0

Почему вы устанавливаете '$ old_umask = umask (0);', а затем 'umask ($ old_umask);'? потому что установить его один раз на вершине достаточно, почему вы устанавливаете его снова в финале? –

0

Umask процесса устанавливается на 0022. Вам необходимо установить его в 0, если вы хотите создать что-то с этими двумя битами записи.

3

Попробуйте это:

<?php 
// files will create as -rw------- 
umask(0); 
// create a file, eg fopen() 

chmod('/path/to/directory', 0777); 
?> 

Reference

+0

Вы должны вернуть его обратно к предыдущему значению. Странные вещи могут произойти иначе. – jwueller

1

Это действительно работает для меня !, вы должны закрыть сейчас этот вопрос!

  1. Создайте каталог!
  2. Дать 777 разрешений!

    $estructure = '../files/folderName'; 
    
    if(!mkdir($estructure, 0777, true)){ 
        echo "<br/><br/>ERROR: Fail to create the folder...<br/><br/>"; 
    } else echo "<br/><br/>!! Folder Created...<br/><br/>"; 
    
    chmod($estructure, 0777); 
    
  3. Наслаждайтесь!

+1

Кроме того, второй аргумент 'mkdir()' is ** NOT ** применяется рекурсивно. Итак, вам нужно изменить разрешения с помощью 'chmod()' впоследствии. – Kamiccolo