mkdir для создания нескольких подкаталогов php/apache
mkdir ("dir1/{dir1-1,dir1-2}",0755,TRUE);
Эта команда создает папку dir1 с одной подпапкой с именем "{dir1-1,dir1-2}" вместо создания папок dir1-1 и dir1-2 в качестве двух подпапок для dir1.
Любая идея, как заставить это работать от единственной команды mkdir как выше?
2 ответа
PHP не поддерживает расширение скобок так же, как и оболочка. Если вы хотите создать несколько каталогов, вам придется позвонить mkdir()
несколько раз, и вы можете легко сделать это с помощью цикла.
Вы можете пройти TRUE
в качестве третьего аргумента mkdir()
- это означает, что все каталоги, поддерживающие дерево, также будут созданы, если они не существуют, а родительский объект доступен для записи. Вы можете спокойно пройти TRUE
для всех вызовов при работе в цикле первая итерация для данного каталога создаст его, последующие вызовы не будут иметь отрицательного влияния.
Например:
$toCreate = array(
'dir1/dir1-1',
'dir1/dir1-2'
);
$permissions = 0755;
foreach ($toCreate as $dir) {
mkdir($dir, $permissions, TRUE);
}
Оболочка MKDIR может сделать:
mkdir -p /foo/bar/peng
так что теперь вы можете просто вызвать команду внешней оболочки из php. Но будьте осторожны с безопасностью.