PHP создает папку с 341 разрешениями - PullRequest
0 голосов
/ 24 сентября 2010

Не повезло, что я нашел ответ в Google, так что это моя последняя попытка, прежде чем пытаться использовать другие методы.

У меня есть такой скрипт:

        // get current year and month
        $cur_year = date('Y');
        $cur_month = date('m');
        $long_type = $this->getFile_longtype();

        $folder = $_SERVER['DOCUMENT_ROOT']."/".FOLDER_CMS."/uploads/$long_type/$cur_year/$cur_month";

        // check whether the folder exists
        if(!is_dir($folder)){

            // try to make the folder recursively
            if(!mkdir($folder,"0777",true)){

                logError($message, __FILE__, __LINE__);
                throw new Exception("Failure creating proper directories");

            }

        }

, чтобы сделатьэто работает, я chmod'ed каталог загрузок и все его файлы и каталоги в 777 (лучше подсказка здесь?)

Длинный тип оценивается как 'images', и этот каталог уже был создан на сервере.

Теперь сценарий создает папку с именем year с правами доступа 341. Это не то, что я хочу, потому что это прекращает рекурсивное наращивание папки или блокирует ее содержимое от меня.

Любая помощь илипредложения?

версия php : 5.2.5

команда настройки : './configure' '--enable-bcmath' '-enable-calendar '' --enable-exif '' --enable-ftp '' --enable-gd-native-ttf '' --enable-libxml '' --enable-magic-quotes '' --enable-mbstring '' --enable-pdo = shared '' --enable-soap '' --enable-sockets '' --enable-wddx '' --enable-zip '' --prefix = / usr / local ''--with-APXS2 = / usr / local / apache / bin / apxs '' --with-bz2 '' --with-curl = / opt / curlssl / '' --with-curlwrappers '' --with-freetype-dir = /usr '' --with-gd '' --with-gettext '' --with-imap = / opt / php_with_imap_client / '' --with-imap-ssl = / usr '' --with-jpeg-dir =/ usr '' --with-kerberos '' --with-libexpat-dir = / usr '' --with-libxml-dir = / opt / xml2 '' --with-libxml-dir = / opt / xml2 /'' --with-mcrypt = / opt / libmcrypt / '' --with-mhash = / opt / mhash / '' --with-mssql = / usr / local / freetds '' --with-mysql = / usr'' --with-mysql-sock = / var / lib / mysql / mysql.sock '' --with-mysqli = / usr / bin / mysql_config '' --with-openssl = / usr '' --with-openssl-dir = / usr '' --with-pdo-mysql = shared '' --with-pdo-sqlite = shared '' --with-png-dir = / usr '' --with-pspell '' --with-sqlite = shared '' --with-tidy = / opt / tidy / '' --with-ttf '' --with-xmlrpc '' --with-xpm-dir = / usr '' --with-xsl = / opt / xslt / '' --with-zlib '' --with-zlib-dir = / usr '

Ответы [ 3 ]

2 голосов
/ 24 сентября 2010

Не используйте строку "0777", используйте 0777.

1 голос
/ 24 сентября 2010

Как уже упоминалось Алексом, вы предполагаете вводить значение OCTAL, а не STRING, из соображений безопасности никогда дает полное разрешение папкам использовать вместо них 0755 .

0 голосов
/ 24 сентября 2010

Реальные разрешения зависят от параметра mkdir и umask . Umask вычитается из разрешений, предоставленных mkdir. Попробуйте установить umask на 0, прежде чем приступить к mkdir.

...