ディレクトリを作成し、そのディレクトリにファイルをアップロードするphpスクリプトを設定しました。私の問題は、スクリプトを使用してディレクトリを作成すると、ファイルが完全にアップロードされないことです。別のホストでまったく同じスクリプトを実行したところ、アップロード プロセスは正常に機能しました。さらに、アップロード ディレクトリを手動で作成し、ftp 経由で chmod 777 を適用すると、転送は正常に機能します。機能が正しく動作するように変更する必要があるホスティングプロバイダーの設定のようなものはありますか?
アップロードフォームは次のとおりです。
<form action="/uploadFile.php" method="post"
enctype="multipart/form-data">
<label for="img_preview">Preview Image:</label>
<input type="file" name="img_preview" id="img_preview" />
<br />
<input type="hidden" name="id" value="newDirectory" />
<input type="submit" name="submit" value="Upload Flyer" />
</form>
ここに私のPHPスクリプト(uploadFile.php)があります:
$thisdir = getcwd();
$new_dir = $_POST['id'];
$full_dir = $thisdir . "/upload/" . $new_dir;
function chk_dir($full_dir) {
if(is_dir($full_dir)) {
echo 'welcome back';
} else {
return mkdir($full_dir);
}
}
chk_dir($full_dir);
chmod($full_dir, 0777);
?>
<?php
//upload image
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["img_preview"]["error"] . "<br />";
}
else
{
}
//set image restrictions
?>
<?php
if ((($_FILES["img_preview"]["type"] == "image/gif")
|| ($_FILES["img_preview"]["type"] == "image/jpeg")
|| ($_FILES["img_preview"]["type"] == "image/pjpeg"))
&& ($_FILES["img_preview"]["size"] < 80000))
{
if ($_FILES["img_preview"]["error"] > 0)
{
echo "Please only upload an image for previewing (jpg or gif)...<br>
Also, check to make sure the filesize is less than 8MB" . $_FILES["img_preview"]["error"] . "<br />";
}
else
{
//check the image into new directory
if (file_exists("upload/". $new_dir ."/". $_FILES["img_preview"]["name"]))
{
echo "It seems that " . $_FILES["img_preview"]["name"] . " already exists.";
}
else
{
move_uploaded_file($_FILES["img_preview"]["tmp_name"],
"upload/" . $_POST['id'] . "/" . $_FILES["img_preview"]["name"]);
echo "image file has transferred successfully!";
}
}
}
else
{
echo "Invalid file please contact for assistance.";
}
?>
また、スクリプトを実行してもエラーは発生せず、ファイルに「画像ファイルが正常に転送されました!」というメッセージが表示されます。しかし、新しい場所でファイルをチェックすると、完全に無効になります。この号をお読みいただきありがとうございます。