dポイントプレゼントキャンペーン実施中!

いつもお世話になっております。
画像アップロード機能を作成し、問題なくアップロードを行うことができたのですが、
ある一定サイズ(約2MB)を超えるとアップロードが行われない現象が発生しました。

アップロードした画像は既定のサイズにリサイズして保存する仕様となっているのですが
アップロード自体が行われないため、困っています。
以下【該当処理抜粋】-------------------------------------------------------------
// ファイル名を設定する
$fname = "hoge.jpg";
// 画像の幅・高さを設定する【規定値】
$w_size = "150";
$h_size = "100";
$tmp_name = $_FILES[$fname]['tmp_name'];
// 画像ファイル名
$filename = "./hoge/".$fname;
if (is_uploaded_file($tmp_name)){
$type = $_FILES[$fname]['type'];
if ($type == "image/jpeg" || $type == "image/pjpeg") {
// 画像ファイル存在チェック
if(file_exists($filename)){
// ファイルが存在する場合は削除する
unlink($filename);
}
// 画像ファイル名でアップロードをおこなう
move_uploaded_file($tmp_name, $filename);
// 画像ファイルのサイズを取得する
list($sw, $sh) = getimagesize($filename);
$src = imagecreatefromjpeg($filename);
$dst = imagecreatetruecolor($w_size, $h_size);
// 画像ファイルを既定サイズにリサイズする
imagecopyresized($dst, $src, 0, 0, 0, 0, $w_size, $h_size, $sw, $sh);
imagejpeg($dst, $filename);
echo $fname[1]."ファイルのアップロードが完了しました。<br>";
}else{
echo $fname ."ファイルの画像形式が正しくありません。<br>";
}
}else{
echo $fname ."ファイルはアップロードされませんでした。<br>";
}
----------------------------------------------------------------------------------------------------
現象について調べたところ、PHPにはアップロードサイズが設定されている(デフォルト2MB)ため
サイズの大きいファイルはアップロードできないようです。
サーバーはロリポップでレンタルしているためphp.iniの設定を変更ができません。

画像自体を事前にリサイズしてアップロードを行えば問題ないのですが、
今後、一般の方にも公開を予定してまして、リサイズ方法が分からない人(そのようなソフトがない人)にも
操作できるようにデジカメで撮った写真をそのままアップロードできる形式にしたいと考えています。

何かいい方法があればご教授願います。
【環境】
PG:php4.3.11 WEB:Apache

A 回答 (3件)

ini_setでダメなものは、.htaccess か php.ini で設定します。


php.ini はいじれないとのことなので、.htaccess で設定してみたらいかがでしょう。

(例)
php_value upload_max_filesize 5M

なお、upload_max_filesize や post_max_size だけではなく、memory_limit の値も関係してくるはずです。

この回答への補足

ちなみに以下のサイトで調べました。ご参考までに載せておきます。
【ロリポップhtaccess設定】
http://lolipop.jp/?mode=manual&state=hp&state2=h …
【htaccess設定方法】
http://webos-goodies.jp/archives/51081890.html

補足日時:2007/05/06 21:02
    • good
    • 0
この回答へのお礼

返信、遅れました。
回答ありがとうございます。
htaccessの設定してみましたが、うまくいきませんでした。
ロリポップに問い合わせをしてみてアップロードサイズの変更ができるのか聞いてみたんですが、ユーザ側でサイズ変更はできませんとの回答でした。(:_;)
というこで、2M以下でアップロードを対応しないということが分かりましたので、簡単な画像リサイズツールを作って提供しようかなと思います。

お礼日時:2007/05/06 21:02

ini_set("upload_max_filesize","8M");


に加えて
ini_set("post_max_size","8M");
ではいかがでしょうか?

Apache側(httpd.conf)で2Mに設定されている場合は
もうどうしようもありません。

しかし、出来たとしても多くの人が2M以上でアップロードしてきたら
転送量が多いという事でロリポップから警告を受けませんか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
やってみたけども実行できませんでした。
ちょっと調べてみたらini_setを使用する場合、設定オプションの変更の可否が「PHP_INI_ALL」または「PHP_INI_USER」でないといけないみたで、
upload_max_filesize、post_max_size共に「PHP_INI_PERDIR」でした・・・
http://jp.php.net/manual/ja/ini.php
なのでこの方法では無理みたいですね(T_T)
おっしゃる通り転送量の件は考慮する必要はありますが、他に方法はないのでしょうか?

お礼日時:2007/05/03 12:12

<?php


ini_set("upload_max_filesize","8M");

・・・以下省略
?>

とかじゃだめかな?
未検証なので自信なし
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
そんなことできたんだ!と思ってやってみましたが駄目でした・・
アクセス権とかの問題でしょうか??

お礼日時:2007/05/03 01:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!