У меня возникла странная проблема в 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.
Что могло быть причиной этого?
Все делается в локальной среде, так что да.
хорошо, и я заметил, что вы ничего не определили для $target_dir. например, global $target_dir; $target_dir = $_SERVER['DOCUMENT_ROOT'];
$target_dir определяется вне области действия функции, содержимое переменной не имеет значения (__DIR__."/foo/").
попробуйте использовать 0755






Оказывается, это проблема с разрешением, предложенная @JamesBond.
Дальнейшее тестирование показало, что мне нужно установить разрешение Execute для владельца. 07xx
Вы можете узнать больше о разрешениях * NIX здесь: permissions-calculator.org/info
у вас есть root-доступ к вашему серверу?