PHP - mkdir () создает первый рекурсивный каталог, но не те, что внутри него

У меня возникла странная проблема в PHP

У меня есть следующий код

function subirFotoTemporal($idhash)
{
    global $target_dir;
    $dirfinal = $target_dir."temporales/".$idhash;
    if (!is_dir($dirfinal))
        mkdir($dirfinal, 0664, true);     
    [...]

Однако в последней строке я получаю предупреждение: mkdir(): Permission denied [...]

Это приводит к сбою последующего кода, поскольку он зависит от каталога, созданного на этом этапе. Оказывается, каталог temporales создан, а каталог на основе $idhash - нет. Папка temporales создается с набором разрешений 0644 вместо 0664, указанного в команде.

Я проверил аналогичные вопросы на сайте и проверил, что каждый файл в среде Apache установлен на владельца www-data.

Что могло быть причиной этого?

у вас есть root-доступ к вашему серверу?

JamesBond 28.03.2018 22:28

Все делается в локальной среде, так что да.

Gabriel I. 28.03.2018 22:29

хорошо, и я заметил, что вы ничего не определили для $target_dir. например, global $target_dir; $target_dir = $_SERVER['DOCUMENT_ROOT'];

JamesBond 28.03.2018 22:30
$target_dir определяется вне области действия функции, содержимое переменной не имеет значения (__DIR__."/foo/").
Gabriel I. 28.03.2018 22:33

попробуйте использовать 0755

JamesBond 28.03.2018 22:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
27
1

Ответы 1

Оказывается, это проблема с разрешением, предложенная @JamesBond.

Дальнейшее тестирование показало, что мне нужно установить разрешение Execute для владельца. 07xx

Вы можете узнать больше о разрешениях * NIX здесь: permissions-calculator.org/info

S. Dev 28.03.2018 22:56

Другие вопросы по теме