Структура папок (окна)
[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
Здесь могут происходить две вещи:
lib
каталог для создания новой папкиПопробуйте использовать приведенный ниже код, чтобы получить каталог вместо использования относительных путей.
$folder = realpath(__DIR__ . '/..') . '/lib/';
if (!file_exists($folder . $m[0])) {
mkdir($folder . $m[0], 0777, true);
}
Других решений пока нет …