PHP画像アップロードオブジェクトはWindowsでディレクトリを作成しません
-
26-09-2019 - |
質問
私はそれがコンストラクターであるため、Product_IDと$ _FILESアレイを受け入れるクラスを書いています。クラスはこれらの変数を保存し、それらを使用してProduct_IDによって名前の新しいディレクトリを作成し、指定されたディレクトリにTEMPファイルをコピーしようとします。
なんらかの理由で、私のクラスはディレクトリを作成するまで取得していません(コンストラクターで発生するはずです)
これが私のコードへのリンクです: http://pastie.org/955454
解決
これは許可の問題になる可能性があります。あなたはそれがWindowsベースのサーバーだと言いますか?このマシンを所有していますか?専用サーバーを使用していますか?共有サーバーを使用していますか?
この質問に対する答えは、実際にはそれらによって与えられた情報に依存しています。マシンを所有している場合は、書き込み可能なハードディスクのディレクトリに移動し、書き込みのアクセス許可を開くだけです。専用の場合、ファイル構造にアクセスして許可設定を変更する合理的に簡単な手段があるでしょう。共有されている場合、同じこと。
他のヒント
この$ this-> directory in the Constructorで絶対的なパスを使用しているようです。つまり、C: Images Upload(またはサイトを実行しているドライブ)として扱われます。これがURIタイプのパスであることを意味する場合は、WebRootをパスに追加する必要があります。
$this->directory = $_SERVER['DOCUMENT_ROOT'] . '/images/upload/' . $this->prod_id
また、mkdir()の返品を確認することもできます。失敗時には虚偽であり、その後チェックできます error_get_last()
(php> = 5.2)それが失敗している理由を正確に確認する。
} else {
$ret = mkdir($this->directory, 0755, true);
if ($ret === FALSE) {
die("mkdir() failed with: " . error_get_last());
}
}