Создайте файл, если папка пуста - PullRequest
0 голосов
/ 26 октября 2018

Я хочу создать файл с некоторой информацией, если папка пуста. Это мой сценарий:

$fileList = glob('tpe*');
if (count(glob('$fileList/*')) == 0 ) {
    $key = 'index.html';
    $person = "<title> En cours </title> <p> Le site est en cours </p>";
    file_put_contents($key, $person, FILE_APPEND | LOCK_EX);
}

проблема в том, что он создает меня в текущем каталоге, а не в пустом каталоге.

Спасибо за помощь;)

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

в строке 3 вместо

$key = 'index.html';

вы должны использовать:

$key = $fileList[0].'/index.html';

Это создаст файл в этой папке, а не в текущем каталоге.

0 голосов
/ 26 октября 2018

В вашем коде есть несколько ошибок.

Прежде всего, когда вы используете одинарные кавычки в glob('$fileList/*'), это буквальная строка $fileList/*.Подстановка переменных отсутствует.

Если вы хотите поместить $fileList значение в строку затем, вам нужно либо использовать двойные кавычки (glob("$fileList/*")), либо конкатенацию (glob($fileList . '/*'))

Следующая ошибка в том, что glob() возвращает массив, поэтому $fileList - это массив, и это означает, что вы не можете просто поместить его в строку.

Теперь, в зависимости от того, что вы на самом делехотите сделать, вы можете захотеть взять какой-либо конкретный результат из glob() или выполнить итерацию по всем из них и делать то, что вы хотите с каждым из них.

Я предполагаю, что вы хотите создать index.html в каждом соответствующем пустом каталоге.

Таким образом, это будет:

foreach($fileList as $filePath) {
    if (count(glob("$filePath/*")) == 0 ) {
       // rest of code
    }
}

Теперь есть ключ к вашей проблеме.Вы помещаете содержимое в файл index.html в текущем каталоге, потому что вы не указываете file_put_contents, где это сделать.

Первый аргумент - путь , а не просто имя файла.Поэтому, когда вы передали значение index.html, это относительный путь к текущему каталогу.

Вам необходимо передать весь путь, который, вероятно, равен $filePath . "/index.html", поэтому он будет:

$key = $filePath . "/index.html";

В конце я хотел бы заметить, что вам может потребоваться дополнительная проверка, например, если сопоставленные пути действительно являются каталогами.Также работа с относительными путями немного рискованна.Было бы лучше положиться на абсолютные пути.

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