2

環境情報:
*Windows Vista
*PHP 5.2.9-2

私はプロジェクトに取り組んでいます。単に「プロジェクト」という名前だとしましょう。ユーザー操作用の私の php ファイルは次の場所にあります。

プロジェクト/ファイル.php

現在、この背後にあるデータベースと、一般的なクラスと構成ファイルを含むいくつかのマップがあります。また、ユーザーがアップロードする可能性のある画像を保存するユーザー用のマップもあります。例えば:

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

この番号は、データベースの user_id に対応しています。

私のregister.phpファイルには、次のコード行が含まれています。

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

$id変数は、データベース内の最大の ID 番号に 1 を加えたものです。

しかし、それはうまくいきません。フォルダーを確認しました。読み取りと書き込みの両方の権限があります(マシンの管理者です)。

私は何を間違っていますか?

注: これを整理するためのより良い方法があることを私に伝える権利は、私に役立つ回答を提供できる人に留保されています。:P

4

4 に答える 4

8

これはどうですか?

mkdir('c:/files/Users/'.$id)
于 2009-08-24T20:11:09.573 に答える
2

いくつかの可能性:

  1. それは絶対パスを与え、相対パスを作成しようとしているので、最初の / を失います-つまり、 mkdir('files/Users/'.$id)
  2. ファイル/ユーザーは既に存在しますか (つまり、既にユーザー 0、ユーザー 1 などがありますか)? そうでない場合は、最初にそれらを作成するか、 mkdir('files/Users/'.$id, 077, true) を実行してディレクトリを再帰的に作成する必要があります。
于 2009-08-24T20:18:39.760 に答える
1

Windows では、パスは「/」ではなく、ドライブ文字で始まります。最初のスラッシュを削除するだけです ('/files/users/' は 'files/users/' になります)。

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

于 2009-08-24T20:20:42.487 に答える
0

PHP は、システム間で / を変換する際に最善の試みを行うと述べています。することによって:

mkdir('/files/users');

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

于 2009-08-24T20:27:16.700 に答える