phpで困ってます
下記のphpで、写真をサーバーにアップロードして、2種類にリサイズして保存し、ファイル名をテキストで保存しようとしてるのですが、ファイル名をテキストで保存する部分file_put_contents($name_file,$name_log);
にエラーがでます。写真はリサイズされ保存されています。何度か見直しているのですが、原因が分かりません。エラーの原因を教えていただきたいと思い、投稿しました。よろしくお願いします。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>画像ファイルアップロード</title>
</head>
<body>
<?php
// 名前保存のテキストファイル
$name_file = "name.txt";
// 名前保存のテキストファイル読み込み用の配列
$name_log = array();
// 名前保存のテキストファイルを読み込み用の配列に読み込む
if (file_exists($name_file)) { $name_log = file( $name_file ); }
// 保存画像の保存先のディレクトリ
$dir_l = 'uploads_l/';
// サムネイル画像の保存先のディレクトリ
$dir_s = 'uploads_s/';
for ( $i=0; $i<count($_FILES['filename']['tmp_name']); $i++ ) {
// ファイル名の取り出し
$file_name = $_FILES['filename']['name'][$i];
// ファイル(MIME)タイプの取り出し
$file_type = $_FILES['filename']['type'][$i];
// 一時ファイル名の取り出し
$temp_name = $_FILES['filename']['tmp_name'][$i];
// 重複しないように日付をヘッダにする
$head = date("YmdHis");
// 保存先のファイル名
$upload_name_l = $dir_l . $head ."-". $file_name;
// サムネイル画像の保存先のファイル名
$upload_name_s = $dir_s . $head ."-". $file_name;
// JPEG形式のファイルをアップロードする
if (($file_type == 'image/jpeg') || ($file_type == 'image/pjpeg')) {
// アップロード(移動)
$result = move_uploaded_file($temp_name, $upload_name_l);
if ($result) {
// アップロードの成功
// アップロードされた画像情報を取り出す
$image_size = getimagesize($upload_name_l);
// アップロードされた画像の幅と高さを取り出す
$width = $image_size[0];
$height = $image_size[1];
// 保存画像の幅と高さを決める
$width_l = 480;
$height_l = round($width_l*$height/$width);
// サムネイル画像の幅と高さを決める
$width_s = 60;
$height_s = round($width_s*$height/$width);
// アップロードされた画像を取り出す
$image = imagecreatefromjpeg($upload_name_l);
// 保存画像の大きさの画像を新規作成
$image_l = imagecreatetruecolor($width_l,$height_l);
// アップロードされた画像から保存画像を作成
$result_l = imagecopyresampled(
$image_l, $image,
0,0, 0,0,
$width_l,$height_l, $width,$height);
if ($result_l) {
// 保存画像作成成功
// 保存画像の保存
if (imagejpeg($image_l,$upload_name_l)) {
echo ' ->保存画像保存';
$add_name = $upload_name_l;
array_push($name_log, $add_name);
} else {
echo ' ->保存画像保存失敗';
}
} else {
// 保存画像作成失敗
echo ' ->保存画像作成失敗';
}
// サムネイルの大きさの画像を新規作成
$image_s = imagecreatetruecolor($width_s,$height_s);
// アップロードされた画像からサムネイル画像を作成
$result_s = imagecopyresampled(
$image_s, $image,
0,0, 0,0,
$width_s,$height_s, $width,$height);
if ($result_s) {
// サムネイル画像作成成功
// サムネイル画像の保存
if (imagejpeg($image_s,$upload_name_s)) {
echo ' ->サムネイル画像保存';
} else {
echo ' ->サムネイル画像保存失敗';
}
} else {
// サムネイル画像作成失敗
echo ' ->サムネイル画像作成失敗';
}
// 画像の破棄
imagedestroy($image);
imagedestroy($image_l);
imagedestroy($image_s);
} else {
// アップロードの失敗
echo '■アップロード失敗';
}
} else {
// JPEG形式以外のファイルはアップロードしない
echo '■JPEG形式の画像をアップロードしてください。';
}
}
//ファイルへ保存
file_put_contents($name_file,$name_log);
?>
</body>
</html>
お礼
yambejp様 回答ありがとうございます tmpの中は空ですが、一杯というのは何で判断すればよろしいでしょうか 一応、hddを分けたりはしておりません
補足
yambejp様 yambejp様のご指摘がビンゴでした dfで調べたところmysqlのデータがパンクしておりました。。 こういう時のために皆HDDを分けるんですね 勉強になりました!ありがとうございます!