12

PHP 5.2.4 (safe_mode なし) Linux サーバーで次のコードを取得しました。

mkdir( $path, 0777, true );

次のようなパスを入力すると:

'/path/to/create/recur/ively/'

次のような別のディレクトリを追加すると、最後のディレクトリを除いてすべてのディレクトリが作成されます。

'/path/to/create/recur/ively/more/'

繰り返しますが、最後のパスを除くすべてのパスが作成されます...

末尾のスラッシュの有無にかかわらず試してみました

ここで教えてもらえますか?

4

7 に答える 7

14

解決策は次のとおりです。問題はありませんでした。

私はコードを単独でテストしませんでしたが、次のコードがディレクトリ構造に何もしていないと仮定しました...

ディレクトリが後でコード自体によって削除されたことがわかったので。

とにかく、教訓...

于 2009-09-23T06:56:10.950 に答える
8

パスから末尾のスラッシュを削除してみてください。

少なくとも、mkdirドキュメントの例ではそのように使用されています。

個人的には問題があったことを覚えていませんが、通常は末尾のスラッシュを追加しないので、試してみてください。

更新

コードを試してみたところ、最後のディレクトリを含むすべてのディレクトリが作成されました。Mac OS X 10.5 を実行しています。なぜそれがうまくいかないのかわかりません:-(

それは私が使用したコードです:

<?php
$path = '/Users/andre/test/bla/foo';
mkdir( $path, 0777, true );

申し訳ありませんが、私はここでは役に立たないようです。

于 2009-09-09T11:46:57.623 に答える
2

すべてを試してもうまくいかない場合は、パスの最後に次のようなテキストを追加します。

$path = '/path/to/create/recur/ively/more/this_wont_be_created_anyway';
于 2009-09-09T12:05:21.797 に答える
1

モードの数値リテラルではなく、私が行ったばかげた間違いを犯して文字列を渡すと、このエラーが発生します。

mkdir( $path, "0777", true ); // BAD - only creates /a/b

mkdir( $path, 0777, true ); // GOOD - creates /a/b/c/d
于 2017-06-26T03:18:49.003 に答える
1

作成される中間ディレクトリは、現在の umask に基づいて設定されます。あなたはこのようなものが欲しい

umask(0777);
mkdir($path, 0777, true);
于 2015-01-15T12:10:21.177 に答える
1

PHPのバージョンは?safe_mode はオンになっていますか?

その場合、 http://bugs.php.net/bug.php? id=43276が発生している可能性があります。

于 2009-09-09T12:09:43.707 に答える