В вашем коде есть несколько ошибок.
Прежде всего, когда вы используете одинарные кавычки в 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";
В конце я хотел бы заметить, что вам может потребоваться дополнительная проверка, например, если сопоставленные пути действительно являются каталогами.Также работа с относительными путями немного рискованна.Было бы лучше положиться на абсолютные пути.