waFiles::create не создает файл, но создает папку Есть решение
Пишу плагин, в экшене требуется создать текстовый файл.
waFiles::create('test.txt');
waFiles::create($path.'test.txt');
waFiles::create('test.txt', false);
waFiles::create($path.'test.txt', false);Не создают файл. Ни в пути /wa-data/... , ни в корне сайта. Права выставлял 777, все равно отказывается.
Папки создаются везде без проблем.
Эта тема в архиве. Добавление комментариев к ней отключено.










8 ответов
Судя по коду этого метода (если не читать комментарий к нему), он не должен создавать файлы. А для чего вам нужно создавать пустые файлы? Обычно ведь файлы создаются с каким-то содержимым.
Если нужен пустой файл, можно использовать waFiles::write($path.'test.txt', '');
Хотя это не отменяет тот факт, что в комментарии к waFiles::create написано, что он файлы создаёт :)
Надо будет пересмотреть назначение этого метода или хотя бы отредактировать описание к нему.
Если не ошибаюсь, он часто используется, чтобы убедиться в существовании директории, перед методами, которые уже будут создавать файл.
$path = wa()->getConfig()->getPath('log'); waFiles::create($path.'/shop/images_regenerate.log'); waLog::log($message, 'shop/images_regenerate.log');Просто описание неправильное.
Да, описание метода поправим.
А waLog::log() и сам умеет создавать недостающие поддиректории, так что можно обойтись последней строкой:
В нём как раз и есть уже waFiles::create().
Просто первый попавшийся пример из кода SS :) Вот более очевидный
$template_path = wa()->getAppPath('templates/layouts/'.ucfirst($layout).'.html', $app_id); waFiles::create($template_path); file_put_contents($template_path, $this->getHtml($app_id, $layout));Хотя тут на waFiles::write можно было заменить.
Так а чем getDataPath не устраивает?
Там же есть флаг создания файла.
А, сорри, увидел. Надо файл создать.