web-dev-qa-db-ja.com

mkdir()が機能しない

私のコード

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

そして

mkdir("relative/path", 0777);

が機能せず、セーフモードがオフになっていて、すべての親フォルダを777に設定してみました。

何か案は?

編集:私はエラー報告をオンにしています、私の欲求不満で私はそれが問題ではないことを確認するためだけにパス全体を777しました。それはばかげて単純なことが起こっていることでなければなりません。

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

編集x3:それで、私はこの質問に対してこれまでで最も不十分な解決策を持っています...私はきれいなVM画像から始めて、それを再試行しました、そしてそれは今動作します。冗談はありません。

12
Mike Keller

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

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

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

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

15
ajm

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

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

3
janmoesen

誰かがこの問題で立ち往生している場合..私が見つけるのに2時間を費やすという1つの答えがあります..私はフルパスと「../mydirectoryname」を使用してみました。

使用してみてください:

mkdir("./mydirectoryname", 0777, true);

の代わりに..

mkdir("../mydirectoryname", 0777, true);
1
Declan Land

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

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

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

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

1
Dominique

将来の参照のために、問題は、新しいディレクトリを作成しようとしているディレクトリに十分な権限がない可能性に起因する可能性があります。

たとえば、インデックスディレクトリは次のようになります。_index.php new_dirs_here_

_new_dirs_here_に十分な権限がない場合、内部にディレクトリを作成することはできません。

これを解決するには、次のコマンドを使用します:_chmod 777 new_dirs_here_

今はセキュリティについて心配していません。当面の問題を解決しようとしているだけです。もちろん、より適切なアクセス許可設定を検索することもできますが、_new_dirs_here_には十分なアクセス許可が必要であるという考え方です。

そうすれば、mkdir()機能は問題なく機能するはずです。

幸運を

0
Chihab