私の問題は、Linuxでディレクトリを作成することです。私のウェブサイトには、サイトの画像をアップロードできるバックエンドがあり、画像がアップロードされた年と月に応じてフォルダーが自動的に作成されます。
しかし、Web ホスト プラットフォームの Windows を Linux に変更すると、エラーが発生しました。画像を正常にアップロードできますが、アップロード時に表示できません。
バックエンド (管理パネル) から名前を付けて画像をアップロードすると、pdf.png
何も表示されず、画像が2012\09\pdf.png
Web サイトのアップロード フォルダーにアップロードされていることがわかります。しかし、このアップロードされたファイルを自分の/2012/09/
フォルダーに入れたいです。フォルダは年月に応じて自動的に作成されました。
エラーのスクリーン ショットと私の php プログラムのソース コード (ZIP)を見つけてください。
function upload()
{
$a = $this->_make_dir();
if(move_uploaded_file($a["tmpname"], $a["target"]))
{
echo 'success';
$this->art_media->create(array("media_filename"=>$a["file"],
"media_date"=>time(),
"media_title"=>$a["file"],
"media_description"=>"",
"media_filelink"=>date("Y")."/".date("m")."/",
"media_isimage"=>false,
"media_type"=>$a["filetype"]
));
}
else
{
echo 'failed';
}
}
function _make_dir()
{
$target1 = FCPATH.$this->config->item("articles_media").date("Y");
$target = $target1."\\".date("m");
$uploadfile = $_FILES["Filedata"]["name"];
$type = $_FILES["Filedata"]["type"];
if(!is_dir($target1))
{
mkdir($target1);
mkdir($target);
}
else
{
if(!is_dir($target))
{
mkdir($target);
}
}
if(is_file($target."\\".$uploadfile)==true)
{
echo 'duplicate';
exit();
//$uploadfile = $uploadfile."_".$n;
}
return array("filetype"=>$type,"file"=>$uploadfile,"targetpath"=>$target."\\","target"=>$target."\\".$uploadfile,"tmpname"=>$_FILES['Filedata']['tmp_name']);
}