2016-10-25 4 views
-1

Я работаю над проектом, в котором я создаю агентство. При создании агентства у меня есть выпадающий список, чтобы выбрать диск. В этом диске папка будет создана с именем агентства и в котором будут сохранены все экспортированные данные. Я могу получить все диски на сервере, выполнив несколько команд оболочки. Я пытаюсь создать папку, используя следующий код:PHP: Как создать каталог на дисках сервера

$agency = 'BookStore'; 
$documentLocation = $val['drive'] . '/agency/documents/document-' . $agency; 

if (!is_dir($documentLocation)) { 
    var_dump(mkdir($documentLocation, 0777, true)); 
} 

где $ Вэл [ «диск»] является путь к диску. Но он создает папку внутри моего проекта, и я хочу создать папку на указанном диске.

+1

Каково точное значение '$ documentLocation' ...? – deceze

+2

Можете ли вы привести нам пример '$ documentLocation', который он производит? Если '$ val ['drive']' что-то вроде «C», например (если вы в Windows), то путь будет недействительным (отсутствует двоеточие «C:») – moopet

+1

не забывайте: '777' это зло. никогда не используйте его. используйте наименее разрешительную конфигурацию. –

ответ

0

Проблема $val['drive']. Если ваша ОС - Windows, вам все равно нужно некоторое форматирование, например, добавление COLON: Вперед-Slashes больше не будет проблемой в Windows, как в Unix.

<?php 

    $agency   = 'BookStore'; 
    $isWindows  = true; //<== A FUNCTION THAT CHECKS IF IT'S A WINDOWS OS 
    $location   = '/agency/documents/document-' . $agency; 
    //IF IT'S WINDOWS OS,WE JUST ADD A COLON (:) AFTER THE DRIVE NAME 
    $documentLocation = (isWindows)?$val['drive'] .":" . $location : $val['drive']. $location; 


    if (!is_dir($documentLocation)) { 
     var_dump(mkdir($documentLocation, 0777, true)); 
    } 
+0

Если это * не * Windows, вам вообще не понадобится буква диска ... – deceze

+0

@deceze Точно .... но, возможно, '$ val ['drive']' указывает на адрес «Установленный объем» на Linux или OSX, но не дольше ** C, D, E, F .... И Z ** Диски ОС Windows ..... что-то вроде '/ Volumes/Macintosh \ HD" 'в Mac или'/home/media/user/ExternalHDD' в Linunx – Poiz

+0

@Poiz да, это unix-сервер. поэтому эти диски выглядят примерно так:/dev/sdb1,/dev/sdb2 – Pranab

Смежные вопросы