mkdir создать папку в ../ — не удалось открыть поток

Структура папок (окна)

[root] level 0
- [lib] level 1
- core.php
- [logs] level 1
-[preg_match number] level 2
- preg_match number.log
- [ajax] level 1
- log_gen.php
- log_gen_root.php
[/root]

lib / core.php фрагмент генератора

if (preg_match('~\d{24}~', $fname, $m)){
//var_dump($m[1]);
if (!file_exists('logs/'.$m[0])) {
mkdir('logs/'.$m[0], 0777, true);
}
}

Я нашел в lib / core.php функцию mkdir, preg_match получает число (как $ fname) и возвращает число (как $ m [0]) .. Есть два варианта

$ fname равно: вариант 1.
Первый вариант создается из корневой папки, например, log_gen_root.php, здесь все работает

logs/544444466666666666666667/544444466666666666666667.log

$ fname равно: вариант 2.
Второй вариант — когда я пытаюсь получить доступ к тому же mkdir из местоположения ajax / log_gen.php, что приводит к ошибке. В обоих случаях папка журнала помещается в корень.

../logs/544444466666666666666666/544444466666666666666666.log

Предупреждение: file_put_contents (../ logs / 544444466666666666666666 / 544444466666666666666666.log): не удалось открыть поток: нет такого файла или каталога в C: \ xampp \ htdocs \ proj \ lib \ core.php в строке 103

0

Решение

Здесь могут происходить две вещи:

  1. У вас нет правильных разрешений на lib каталог для создания новой папки
  2. Ваш путь неверен.

Попробуйте использовать приведенный ниже код, чтобы получить каталог вместо использования относительных путей.

$folder = realpath(__DIR__ . '/..') . '/lib/';

if (!file_exists($folder . $m[0])) {
mkdir($folder . $m[0], 0777, true);
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]