スキーマ内の特定の画像のみ保存できない

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
bcacsato
パワーユーザー
記事: 233
登録日時: 2005年11月27日(日) 14:05

スキーマ内の特定の画像のみ保存できない

投稿記事 by bcacsato » 2012年8月11日(土) 17:31

いつも私ばかりの質問でスイマセン…。

1つのエントリに写真を20枚ほど掲載するスキーマを作成したのですが、
管理画面より写真をアップすると、最後の5枚がなぜか保存されません。
(ファイルを選択しても、保存すると写真が消えており、「(画像なし)」となっています。)

サーバーはロリポップを使っています。
各写真のサイズは20?30KB程度ですので、決して大きくはありません。
1エントリ内の写真点数が多いためかと思い、
サーバーのupload_max_filesizeを20MBに上げましたが、それでも変わりません。

スキーマファイルは下記のように記述しています。

コード: 全て選択

<data name="course1-pic1" type="img" caption="写真1" width="200" maxfilesize="2000000" alt="True" />
<data name="course1-pic2" type="img" caption="写真2" width="200" maxfilesize="2000000" alt="True" />
 :
 :
<data name="course10-pic1" type="img" caption="写真1" width="200" maxfilesize="2000000" alt="True" />
<data name="course10-pic2" type="img" caption="写真2" width="200" maxfilesize="2000000" alt="True" />
前半の部分のソースを複製して使ってますので、記述ミスもないはずです。

ためしに、他の部分は登録せず、最後だけに写真を登録しても、やはり登録されません。
しかし、スキーマから前半の記述をごっそり消して試してみると、消した行数分、後半も登録可能となります。

どのような原因が考えられますでしょうか?

bcacsato
パワーユーザー
記事: 233
登録日時: 2005年11月27日(日) 14:05

Re: スキーマ内の特定の画像のみ保存できない

投稿記事 by bcacsato » 2012年8月12日(日) 01:25

補足です。

試しに、別のサーバー(Joe'sウェブホスティング)に移したところ、
そちらでは問題なく写真がアップロードできるようになりました。
サーバーとの相性なのでしょうか?
これまではロリポップでも問題なく使えていたのですが…。
できればロリポップを使い続けたいため、もし対処法が分かりましたら教えてくださいませ。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: スキーマ内の特定の画像のみ保存できない

投稿記事 by webmaster » 2012年8月12日(日) 03:29

bcacsatoさん、不具合によりご迷惑をおかけしております。webmasterです。

現時点で原因が不明なのですが、別のサーバではうまくいったということを考えると、確かにサーバ側に何らかの原因があるのかもしれません。

問題点を絞り込むために、非常に基本的な事柄で申し訳ないのですが、以下の点を(可能な範囲で結構ですので)ご確認頂いてもよろしいでしょうか。

1. サーバの保存容量を超えていないでしょうか。
2. ファイルをアップロードする順番を変えてもやはり最後の5個に問題が起こるでしょうか(つまり、順番の問題ではなくファイル固有の問題だったりしないでしょうか)。
3. 正しく保存されたファイルと同一のファイルを、02,03,04,05…のように末尾に連番を振ってコピーし、それをアップロードしても、やはり同様の現象が起こるでしょうか。
4. 非常に小さなファイル(数KB)。できれば1KB以下)のみを20個アップロードした場合、どうなるでしょうか。

可能性が高いのは、PHPのメモリ上限をオーバーしているケースです。この場合は、1つ1つファイルをアップロードしては保存、を繰り返していけば、うまく保存される可能性が高いです。(一度アップロードされたファイルは2回目以降の保存時にはサーバへ送信されません)

以上、大変お手数をおかけしておりますが、何か情報が得られましたらご連絡頂ければ幸いです。

bcacsato
パワーユーザー
記事: 233
登録日時: 2005年11月27日(日) 14:05

Re: スキーマ内の特定の画像のみ保存できない

投稿記事 by bcacsato » 2012年8月12日(日) 04:20

深夜にもかかわらず、ご回答ありがとうございます。

> 1. サーバの保存容量を超えていないでしょうか。

はい、容量は越えていません。
別のエントリを作成しても、最初の15枚は写真を登録できますので、サーバー容量の問題ではないかと思います。


2. ファイルをアップロードする順番を変えてもやはり最後の5個に問題が起こるでしょうか(つまり、順番の問題ではなくファイル固有の問題だったりしないでしょうか)。

はい、他の箇所は一切登録せず、最後の5個のうちのどれか1つだけに登録した場合でも、登録できません。
また、アップロードする画像は全て同じもので試してますので、ファイル固有の問題でもないです。

3. 正しく保存されたファイルと同一のファイルを、02,03,04,05…のように末尾に連番を振ってコピーし、それをアップロードしても、やはり同様の現象が起こるでしょうか。

はい、末尾に連番を振ってみましたが、やはりダメでした。


4. 非常に小さなファイル(数KB)。できれば1KB以下)のみを20個アップロードした場合、どうなるでしょうか。

はい、45バイトのgif画像で試してみましたが、ダメでした。


恐れ入りますが、ご検討よろしくお願いします。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: スキーマ内の特定の画像のみ保存できない

投稿記事 by webmaster » 2012年8月12日(日) 10:09

webmasterです。bcacsatoさん、こちらこそ、深夜のお仕事お疲れ様です。

頂いた情報からすると、ファイル上限数が20個に制限されているという現象以外に考えられず、調べたところ、PHP5.2.12よりファイルアップロード数上限が初期状態で20個に制限されるようになったことが分かりました。勉強不足で申し訳ありません。

この設定は、php.iniの以下の設定で変更することができます(サーバによっては変更できなくなっていることもあるかもしれませんが)。

max_file_uploads = 100

他の設定と同じように、.htaccess から、

php_value max_file_uploads 100

のように設定しても良いと思います。お試し頂ければ幸いです。

bcacsato
パワーユーザー
記事: 233
登録日時: 2005年11月27日(日) 14:05

Re: スキーマ内の特定の画像のみ保存できない

投稿記事 by bcacsato » 2012年8月12日(日) 11:21

webmasterさま

ご回答ありがとうございます。
なるほど、phpの仕様だったのですね。

ロリポップの管理画面のphp設定画面では、upload_max_filesizeはあるものの、
max_file_uploadsはありませんでした。

そのため、.htaccessに「php_value max_file_uploads 100」と記載してみましたが、
やはり画像は登録できませんでした。
.htaccessの書き方が違ってますでしょうか?これ以外にも記述が必要ですか?
恐れ入りますが、ご教示ください。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: スキーマ内の特定の画像のみ保存できない

投稿記事 by webmaster » 2012年8月12日(日) 12:15

webmasterです。

お手間を取らせてしまい申し訳ありません。そのような結果になるということは、おそらくユーザー側で同時ファイルアップロード数上限を変更できないようになっているものと思われます。
この場合は、大変申し訳ないのですが、現状の制限の中で運用していただくことなるかと思います。

この制限は、あくまでも「同時にアップロードする上限」ですので、まず15個なり20個なりのファイルを入力した状態で「保存」して頂き、その後で残りのファイルを入力してさらに「保存」するという形で、こまめに保存しながら更新していけば、20個を超える数のファイルをアップロードすることができます。ただ、その分エンドユーザー様に運用上でのご不便をおかけすることになりますので、根本的な解決とは言えず、申し訳ありません。

1エントリ中に20個を超えるファイルがあり、サーバ側でこの制限がかかっている場合には、「同時にファイルを更新できる数に制限がある為、ここから先は、いったんエントリを保存した上で入力を続けてください」などの説明文を管理画面に追加しておくと良いかもしれません。m(__)m

bcacsato
パワーユーザー
記事: 233
登録日時: 2005年11月27日(日) 14:05

Re: スキーマ内の特定の画像のみ保存できない

投稿記事 by bcacsato » 2012年8月12日(日) 15:56

webmasterさま

ご回答ありがとうございます。
ところが、いったん保存してから、残りの画像を登録しても、登録できないのです。
最初の質問内にも書きました通り、まったく何も登録していない状態で、
最後の1枚だけ登録しても、登録することができません。

ですので、もしかしたら原因が違うのかもしれませんね…。
今回は時間がないため、別のサーバーを使う形で検討したいと思います。

お盆中にもかかわらず、ご対応ありがとうございまいしたm(__)m

bcacsato
パワーユーザー
記事: 233
登録日時: 2005年11月27日(日) 14:05

Re: スキーマ内の特定の画像のみ保存できない

投稿記事 by bcacsato » 2012年8月13日(月) 12:17

ロリポップの上位プランのヘテムルで試してみたところ、
特にphpの設定等を変えなくても、初期状態で写真が全てアップロードできるようになりました。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: スキーマ内の特定の画像のみ保存できない

投稿記事 by webmaster » 2012年8月13日(月) 13:13

bcacsatoさん、ご報告ありがとうございます。この度はお役に立てず申し訳ありません…。

もう少し調べてみたのですが、PHPの仕様的に、実際にファイルをアップロードしているかどうかに関わらず、フォームの中にファイル項目があったら、max_file_uploadsの制限を超える分については処理しない、というようになっていたようです。この仕様はPHP5.3.4で修正され、実際にファイルを指定していない項目については制限に数えられないようになっているようです。

いろいろと勉強不足でお手数をおかけ致しました。m(__)m

bcacsato
パワーユーザー
記事: 233
登録日時: 2005年11月27日(日) 14:05

Re: スキーマ内の特定の画像のみ保存できない

投稿記事 by bcacsato » 2012年8月13日(月) 14:19

なるほど、PHPのバージョンによっても違うのですね。
PHPのバージョンを5.3に上げたら、写真がアップロードできるようになりました。
一気にアップできるのは20枚ですが、おっしゃる通り2回に分けるともにより、全部アップロードできます。
(ちなみに、ヘテムルですと、一気に20枚以上全てアップロード可能です。)
いろいろと調べていただき、大変ありがとうございました。

返信