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 написано, что он файлы создаёт :)
Надо будет пересмотреть назначение этого метода или хотя бы отредактировать описание к нему.
Если не ошибаюсь, он часто используется, чтобы убедиться в существовании директории, перед методами, которые уже будут создавать файл.
Просто описание неправильное.
Да, описание метода поправим.
А waLog::log() и сам умеет создавать недостающие поддиректории, так что можно обойтись последней строкой:
В нём как раз и есть уже waFiles::create().
Просто первый попавшийся пример из кода SS :) Вот более очевидный
Хотя тут на waFiles::write можно было заменить.
Так а чем getDataPath не устраивает?
Там же есть флаг создания файла.
А, сорри, увидел. Надо файл создать.