product_id と $_FILES 配列をコンストラクターとして受け入れるクラスを作成しています。クラスはこれらの変数を保存し、それらを使用して product_id という名前の新しいディレクトリを作成し、指定したディレクトリに一時ファイルをコピーしようとします。
何らかの理由で、私のクラスはディレクトリを作成するところまで到達していません(コンストラクターで発生するはずです)
ここに私のコードへのリンクがあります: http://pastie.org/955454
product_id と $_FILES 配列をコンストラクターとして受け入れるクラスを作成しています。クラスはこれらの変数を保存し、それらを使用して product_id という名前の新しいディレクトリを作成し、指定したディレクトリに一時ファイルをコピーしようとします。
何らかの理由で、私のクラスはディレクトリを作成するところまで到達していません(コンストラクターで発生するはずです)
ここに私のコードへのリンクがあります: http://pastie.org/955454
これは権限の問題である可能性があります。Windows ベースのサーバーだと思いますか? あなたはこの機械を所有していますか?専用サーバーを使用していますか?共有サーバーを使用していますか?
この質問に対する答えは、実際にそれらから提供される情報に依存します。マシンを所有している場合は、書き込み可能にしたいハード ディスク上のディレクトリに移動し、そのアクセス許可を開いて書き込みを行うことができます。専用の場合、ファイル構造にアクセスしてそのアクセス許可設定を変更するためのかなり簡単な方法がおそらくあります。シェアしても同じです。
コンストラクターでこの $this-> ディレクトリに絶対パスを使用しているようです。つまり、C:\images\upload (またはサイトを実行しているドライブ) として扱われます。これを URI タイプのパスにする場合は、パスに webroot を追加する必要があります。
$this->directory = $_SERVER['DOCUMENT_ROOT'] . '/images/upload/' . $this->prod_id
また、mkdir() が返すものを確認することもできます。失敗した場合は FALSE です。その後、error_get_last()
(PHP >= 5.2) をチェックして、失敗した理由を正確に確認できます。
} else {
$ret = mkdir($this->directory, 0755, true);
if ($ret === FALSE) {
die("mkdir() failed with: " . error_get_last());
}
}