2016-10-25 9 views
-1

私は代理店を作成しているプロジェクトに取り組んでいます。代理店を作成する際に、ドライブを選択するためのプルダウンがあります。そのドライブでは、代理店の名前でフォルダが作成され、エクスポートされたすべてのデータが保存されます。少数のシェルコマンドを実行して、サーバー内のすべてのドライブを取得できます。次のコードを使用してフォルダを作成しようとしています。PHP:サーバードライブにディレクトリを作成する方法

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

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

ここで、$ val ['drive']はドライブパスです。しかし、それは私のプロジェクトの中にフォルダを作成し、私は指定されたドライブにフォルダを作成したい。

+1

'$ documentLocation'の正確な値は何ですか? – deceze

+2

'$ documentLocation'の生成例を教えてください。 '$ val ['drive']'が 'C 'のようなものであれば(Windowsの場合)、パスは無効になります(コロン' C: 'がありません) – moopet

+1

' 777'悪です。それを使用しないでください。可能な限り最小限の構成を使用してください。 –

答えて

0

問題は$val['drive']です。お使いのOSがWindowsの場合は、COLON:のような追加の書式設定が必要です.Windowsでは、Forward-Slashesは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 OSのドライブ..... Macの ''/Volumes/Macintosh \ HD ''や'/home/media/user/ExternalHDD' in Linunx – Poiz

+0

@Poizはい、それはUNIXサーバです。ドライブは次のようなものです:/ dev/sdb1、/ dev/sdb2 – Pranab