13

私のコード

mkdir("/some/absolute/path",0777);

mkdir("relative/path", 0777);

が機能していない、セーフ モードがオフになっている、すべての親フォルダーを 777 に設定しようとしたことさえあります。

何か案は?

編集:エラーレポートをオンにしていますが、欲求不満で、パス全体を777で確認しましたが、それは問題ではありません。ばかばかしいほど単純なことが起こっているに違いありません。

編集編集:提案に応じたすべての人に賛成票を投じます...しかし、これはまだ解決されていないため、回答を選択するつもりはありませんが、これは永遠に開かれたままの回答の1つになると思います.

編集 x 3: したがって、この質問に対する解決策はこれまでで最も満足のいくものではありません...クリーンな VM イメージから始めて再試行したところ、現在は機能しています。冗談抜き。

4

9 に答える 9

15

すべての親ディレクトリが存在しますか?

そうでない場合は、再帰を有効にする必要があります (ここでは PHP5 を想定しています)。

mkdir('/path/to/your/dir',0777,true);

編集:下からのすべてのディレクトリが誰でも書き込み可能に設定されているという隠しコメントが表示されなかったvarので、ディレクトリパスが存在し、上記は役に立たないと確信しています。ごめん!

于 2010-06-24T19:18:56.353 に答える
4

mkdir -pコマンドラインで行うように、これらのディレクトリを再帰的に作成しようとしていますか? その場合trueは、 の第 3 パラメータとして指定しますmkdir

以前の提案を反映するために、表示されるエラー メッセージを指定してください。何も得られない場合は、呼び出しの前にこれを使用してください:error_reporting(-1); // ALL messagesini_set('display_errors', 'On');.

于 2010-06-25T12:45:49.890 に答える
2

可能な限り短いテストで試しましたか?

mkdir('ディレクトリ',0777);

これが機能しない場合は、0755 のような標準の CHMOD で作成してみます (これは完全にランダムな推測であり、サーバーが PHP 経由で 0777 を作成することを許可しない可能性があります)。

これが機能しない場合、サーバーにはおそらく別のセットアップが必要であると思います/phpにはフォルダーへの書き込み権がありません。ホストプロバイダーに問い合わせることができますか?

于 2010-06-25T12:47:03.637 に答える
1

同様の問題があり、ドライブに空き容量が残っていないことがわかりました。コマンドdf(Linux の場合) を使用して、ドライブの容量を確認してください。root にはスペースが事前に予約されているため、この状況で root がファイルとフォルダーの作成を許可される可能性があります。rootユーザーとしてコマンドラインからスクリプトを実行すると、エラーは発生しませんが、スクリプトが によって実行されるapacheと、エラーが発生します。

于 2012-10-29T08:17:36.667 に答える
-3

パス名パラメーターを囲む引用符がありません。

于 2010-06-24T18:55:49.467 に答える
-4

属性は引用符で囲む必要があります。

mkdir('path/to/your/dir','0777');
于 2010-06-24T20:59:44.813 に答える