Intereting Posts
Сравнение нескольких значений в PHP загрузка на сервер mysql не работает regexp для поиска файла пути изображения в теге изображения Как вычислить значение умножения внутри цикла while в PHP? Получение минимальной суммы заказа для метода «Бесплатная доставка» на странице проверки jquery не будет работать в файле, полученном с помощью java select include Существуют ли чистые виртуальные функции в PHP, например, с C ++ Когда нужно санировать код PHP и MySQL, прежде чем хранить его в базе данных или когда он отображается? PHP: данные POST скрытых полей twig template engine, используя статическую функцию или переменную Есть ли способ, которым я применяю эту ошибку PHP, если я использую переменную uninitialized / undefined? Онлайн-приложение для голосования. Как избежать повторного голосования от одного и того же пользователя Можно ли удалить реферер в PHP перед перенаправлением? Как проверить класс в body_class () в WordPress Лучший способ реализовать JWT?

PHP не работает chmod?

Я запускаю PHP 5.3.5-1ubuntu7.2 (с safe_mode = Off ), и я не могу правильно установить режим для любого файла или каталога из PHP-скрипта, я закодировал следующий тест (просто чтобы убедиться) :

 $result = array(); if (mkdir('./I/do/not/exist/', 0777, true) === true) { $result['./I/'] = sprintf('%s (%s)', getFileOwner('./I/'), getFilePermissions('./I/')); $result['./I/do/'] = sprintf('%s (%s)', getFileOwner('./I/do/'), getFilePermissions('./I/do/')); $result['./I/do/not/'] = sprintf('%s (%s)', getFileOwner('./I/do/not/'), getFilePermissions('./I/do/not/')); $result['./I/do/not/exist/'] = sprintf('%s (%s)', getFileOwner('./I/do/not/exist/'), getFilePermissions('./I/do/not/exist/')); $result[__DIR__] = sprintf('%s (%s)', getFileOwner(__DIR__), getFilePermissions(__DIR__)); $result[__FILE__] = sprintf('%s (%s)', getFileOwner(__FILE__), getFilePermissions(__FILE__)); } echo '<pre>'; print_r($result); echo '</pre>'; function getFileOwner($path) { $user = posix_getpwuid(fileowner($path)); $group = posix_getgrgid(filegroup($path)); return implode(':', array($user['name'], $group['name'])); } function getFilePermissions($path) { return substr(sprintf('%o', fileperms($path)), -4); } 

И это результат:

 Array ( [./I/] => www-data:www-data (0755) [./I/do/] => www-data:www-data (0755) [./I/do/not/] => www-data:www-data (0755) [./I/do/not/exist/] => www-data:www-data (0755) [/home/alix/Server/_] => alix:alix (0777) [/home/alix/Server/_/chmod.php] => alix:alix (0644) ) 

Почему ни одна из (под) папок ./I/do/not/exist/ получает указанные ( 0777 ) разрешения?

Возможно, вам придется очистить umask до создания каталога. Однако рекомендуется настраивать разрешения с помощью chmod вместо того, чтобы полагаться на umask.

Похоже, у вас есть umask 022. Попробуйте добавить umask(0) до mkdir

Просто прочитайте руководство:

Режим также изменяется текущей umask, которую вы можете изменить с помощью umask () .

Проверьте свои системы umask и соответствующим образом используйте параметр режима.

В качестве альтернативы установите umask в значение, с которым вы можете иметь дело.

Или позаботьтесь о chmod'ding после создания каталога.