PHP - mkdir: создать папку с теми же правами, что и у ее родителя. - PullRequest
0 голосов
/ 08 апреля 2019

Есть ли в PHP способ создать folder с тем же разрешением, что и parent.

Например: У меня есть папка /a/b с 0755 разрешениями, Я хочу создать папку a/b/c с такими же разрешениями. 0755 в этом случае.

Насколько я знаю, PHP создает папки с разрешением 0777 по умолчанию с функцией mkdir. Есть ли умный способ определить разрешение родительской папки и затем создать эту дочернюю папку с тем же chmod?

Редактировать: Здесь я ищу решение для создания floder с mkdir, а не как получить права доступа к файлу / папке.

@ Решение ArtisticPhoenix - это то, что я искал.

Спасибо.

1 Ответ

2 голосов
/ 08 апреля 2019

Вы можете попробовать эту вещь, которую я только что вытер (не проверено)

chmod($filename, substr(sprintf('%o', fileperms(dirname($filename))),-4));

http://php.net/manual/en/function.chmod.php

http://php.net/manual/en/function.fileperms.php

Я думаю, что другие функции довольно понятны, или достаточно просты, они не гарантируют ссылку. dirname($filename) конечно, является каталогом файлов.

Этот substr(sprintf('%o', fileperms(...)),-4) материал взят со страницы документации:

Пример # 1 Разрешения на отображение в виде восьмеричного значения

  echo substr(sprintf('%o', fileperms('/tmp')), -4);
  echo substr(sprintf('%o', fileperms('/etc/passwd')), -4);

Это похоже на то, что мы хотели бы использовать, потому что именно этого хочет chmod, но, возможно, стоит проверить, требуется ли это или нет (возможно, это достаточно умно, чтобы понять это). Я действительно не использовал fileperms раньше. В большинстве случаев is_writable - это все, что мне нужно.

Надеюсь, это сработает.

...