0

まだ作成されていない場合は、新しいフォルダーを作成します。そのために、私は次のように書きました。

//Set up the log directory

if(is_dir(dirname(LOG_PATH))) {

} else {
    mkdir(LOG_PATH, 0777, true);
    echo "Directory created. ". LOG_PATH ."<br />";
}

LOG_PATH = E:\xampp\htdocs\photo\logs\

写真フォルダはありますが、logs フォルダがありません (そのフォルダを作成したい)。

ここの if ステートメントが true であるため、何か不足していますか。そうであってはなりません。

4

2 に答える 2

1

dirname(LOG_PATH)LOG_PATH( E:\xampp\htdocs\photo)の親を返すため、フォルダーが存在する場合ではなく、フォルダーが存在するif場合にステートメントは true になります。photologs

条件を次のように変更する必要があります。

if (is_dir(LOG_PATH)) {

} else {
    mkdir(LOG_PATH, 0777, true);
    echo "Directory created. ". LOG_PATH ."<br />";
}

そして、最初のブランチを空のままにしておく場合は、条件を否定してください:

if (!is_dir(LOG_PATH)) {
    mkdir(LOG_PATH, 0777, true);
    echo "Directory created. ". LOG_PATH ."<br />";
}

ところで、mkdirそこに新しいフォルダーを作成する権限がない場合、呼び出しが失敗する可能性があるため、失敗するかどうかを確認する必要があります。

if (!is_dir(LOG_PATH)) {
    if (mkdir(LOG_PATH, 0777, true)) {
        echo "Directory created. ". LOG_PATH ."<br />";
    } else {
        throw new Exception("Can't create folder " . LOG_PATH);
    }
}
于 2014-04-09T08:20:46.917 に答える
0

パスにスラッシュが含まれている場合、「mkdir」関数は Windows で正しく機能しません。スラッシュを含むパスの部分は作成されません。

mkdir('c:/a/b/c/d', 0775, 真);

次のエラー メッセージが表示される: 警告: mkdir() [function.mkdir]: そのようなファイルまたはディレクトリはありません

Windows ではバックスラッシュを使用するか、定数 DIRECTORY_SEPARATOR を使用してください。

mkdir('c:\a\b\c\d', 0775, 真); mkdir('c:'.DIRECTORY_SEPARATOR.'a'.DIRECTORY_SEPARATOR.'b'.DIRECTORY_SEPARATOR.'c'.DIRECTORY_SEPARATOR.'d', 0775, true);

于 2014-04-09T08:13:31.490 に答える