2009-08-24 12 views
1

環境情報でフォルダを作成することはできません。単に「プロジェクト」という名前だとしましょう。ユーザー・インタラクションのためのもの、私のPHPファイルには、私はこの、一般的にクラスや設定ファイルを含むいくつかのマップ、背後のデータベースを持って、今はMKDIR

プロジェクト/ file.php

で発見されます。ユーザーのための地図もあります。そこにアップロードする画像が保存されています。例えば:

プロジェクト/ファイル/ユーザ/ 0/profilePic.jpg

数は、データベース内のuser_idに対応します。

register.phpファイルのコード行が含まれています

mkdir('/files/Users/'.$id) 

$id変数が最大のIDデータベース内の数字、プラス1

である。しかし、それは動作しません。私はフォルダをチェックし、私は両方の読み取りと書き込みの許可を持っています(私は自分のマシンに管理者です)。

私は間違っていますか?

注:私に役立つ回答を与えることができる人にこの予約を整理するためのよりよい方法があることを教える権利があります。 :P

答えて

7

この点についてはどうですか?

mkdir('c:/files/Users/'.$id) 
+0

まあ、それはやったのですが、問題は残っています。 – KdgDev

+1

ねえ、Windowsではドライブレターを指定する必要がありますが、システムは何の仮定もしません。 –

+1

"/ files/Users /"というパスがphp + windowsに存在しないため、なぜそれがうまくいかなかったのかがはっきりしています。開始スラッシュは絶対パスを示し、ウィンドウには存在しません。 相対パスが必要な場合は、最初のスラッシュを削除します。 – Henri

2

可能性のカップル:

  1. それは絶対パスを与え、あなたは相対パスを作るために探しているので、/最初のを失う - ( 'ファイル/ユーザーそれほどます。mkdir /'.$ id)
  2. ファイル/ユーザはすでに存在していますか(つまり、すでにユーザ0、ユーザ1などが存在していますか)。そうでなければ、それらを最初に作成するか、mkdir( 'files/Users /'.$ id、077、true)を実行してディレクトリを再帰的に作成する必要があります。
+0

'ファイル/ユーザー'は既に存在します。すべてのユーザーは既に存在しています(データベース管理のためにphpMyAdminを使用しています) – KdgDev

+0

相対パス対絶対パスです。 – KdgDev

1

ウィンドウでは、パスは「/」で始まらず、ドライブ文字で始まります。最初のスラッシュを削除してください( '/ files/users /'は 'files/users /'になります)。

さらに、マークさんが言ったこと。

0

PHPは、/ betweenシステムを変換する際に最も効果的だと言います。次のようにしてください:

mkdir('/files/users'); 

混乱したPHPが* NIXシステム上にあると考えています。ルートをc:に設定することで、パラメータを適切に解析して、それがWindowsシステムであると推定できるようになりました。

+0

PHPはそれが実行されているシステムの種類を検出しようとしませんが、mkdirに渡す引数に基づいて推測しようとしますか? – Stewart

+0

簡単な答えははいです。システムに準拠して以来、どのOSが動作しているかはすでに分かっています。 – MANCHUCK

関連する問題