phpについて


フォームからファイルをアップしているのですが
アップできるファイルとできないファイルがあります。

例えば a.pdf はアップできるが b.pdf はアップできない。
と言う状態です。

アップできないファイルは
他の処理を書かずに、phpの最初に print $_FILES['hoge']['size']; としても「0」と表示されます。
$_FILES['hoge']['name'] はきちんとファイル名を表示します。

アップできるファイルはきちんとサイズを返してくれますし
保存もできるのでコードが間違っているとは思えないのですが.....

思い当たる原因を教えてください。

よろしくお願いします。

一応
サーバの容量は沢山空いておりアップするスペースがないと言うことはありません。
アップできないファイルは巨大だからということもありません。
ファイルが空と言うことはありません。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2009/08/05 01:06:43
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント20pt

php.ini の upload_max_filesize は何Mバイトに設定されていますか?

これを超えるサイズのファイルはアップすることが出来ません。

id:worldtravel

ありがとうございます。

この値より少ないファイルでも無理でした。

2009/08/03 12:07:14

その他の回答4件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633ここでベストアンサー

ポイント20pt

php.ini の upload_max_filesize は何Mバイトに設定されていますか?

これを超えるサイズのファイルはアップすることが出来ません。

id:worldtravel

ありがとうございます。

この値より少ないファイルでも無理でした。

2009/08/03 12:07:14
id:ymlab No.2

回答回数508ベストアンサー獲得回数34

ポイント20pt

サーバにApacheをお使いの場合、Apacheの方の設定も検討してみましたか?

おそらくデフォルトでは2MB, 20MBに設定されていたような覚えがあります。

[私もここでつまずきました。]

http://se-suganuma.blogspot.com/2009/02/apachephpini.html

http://it.cardinals-fan.com/archives/21

id:worldtravel

ありがとうございます。

現在再確認しています。

2009/08/03 13:08:25
id:y-kawaz No.3

回答回数1422ベストアンサー獲得回数226

ポイント20pt

アップロードファイルのサイズ制限に問題がないと仮定します。

そういった中でも僕も昔同じようなことを経験したことがあります。

たまたまファイルのバイナリ中に、ウィルスチェックパターンに引っかかっているバイト列があり、それが原因でファイヤウォール等により送信中に切断されてしまうという現象に出会ったことがあります。

その場合は回避策としてファイアウォールの設定を確認するか、もしくはzip圧縮し直すなどとして全く別のバイナリにすることで回避が出来る可能性もあります。

id:worldtravel

ありがとうございます。

2009/08/03 15:43:53
id:organic19 No.4

回答回数6ベストアンサー獲得回数1

ポイント20pt

まず、基本的なことですが、確認する手順として、

apacheのphp.iniの下記設定

・upload_max_filesize

・post_max_size

・memory_limit

HTML(input typeタグ)の MAX_FILE_SIZEの設定

value値は設定されていますか?

name値とpost値は同じですか?

その他

スクリプトを見ないとわかりませんが、スクリプトがおかしいとか。

ファイヤーフォール関連、そもそもファイルが壊れてる等。

id:worldtravel

ありがとうございます。

MAX_FILE_SIZE は設定していません。

ファイヤーフォール関連はわかりません。

ファイルはpdfとして開けるファイルです。

2009/08/04 14:09:24
id:asahiru No.5

回答回数101ベストアンサー獲得回数0

ポイント20pt

>アップできるファイルはきちんとサイズを返してくれますし

>保存もできるのでコードが間違っているとは思えないのですが.....

>print $_FILES['hoge']['size']; としても「0」と表示されます。

たぶん、コードが間違っています。

print $_FILES['hoge']['error'];

で確認してみてはどうでしょうか?

id:worldtravel

ありがとうございます。

「4」でした。

2009/08/04 14:01:07
  • id:pahoo
    > この値より少ないファイルでも無理でした。

    php.ini の post_max_size も確認してください。
    Webサーバは何を御利用ですか? Apacheでしたら、httpd.conf の LimitRequestBody がアップロードサイズ制限になっています。
  • id:worldtravel
    皆様ありがとうございます。

    いま設定を再確認しております。
    しばらくお待ちください。
  • id:worldtravel
    最初の設定はこちらでした。
    この時点で2.5Mのファイルのアップができません。

    memory_limit : 128M
    post_max_size : 8M
    upload_max_filesize : 5M

    php.ini で一応上限を変えましたが動作は変わりませんでした。

    upload_max_filesize = 512M
    post_max_size = 512M
    memory_limit = 512M

  • id:worldtravel
    皆様ありがとうございました。

    print $_FILES['hoge']['error'];
    を、phpの一番最初に書いたら「1」と表示されました。

    php.ini の upload_max_filesize ディレクティブの値を超えている。に該当します。

    また、php.ini は上記のように書いて設置しましたが効果を有効にして頂けないようです。

    php.ini が無理なら。と、php内に ini_set() で書きましたが、これも無理なようです。


    そこでご相談なのですが、
    こういったサーバでは、もうどうしようもないのでしょうか。
    ないのでしょうね....

    よろしくお願いします。
  • id:pahoo
    PDFファイルをクライアント側で圧縮するか分割するかして、サーバ側で解凍または結合したらいかがでしょう。
  • id:worldtravel
    ありがとうございます。
    さすがにそこまでは.....

    今のところは、これだけではなく異常に遅いという問題もあったので、
    今回はサーバの移転を勧めました。

    ありがとうございました。

この質問への反応(ブックマークコメント)

トラックバック

  • LAMP環境構築メモ 最近友人とサービスを立ち上げようとしていて、 そのための環境構築のメモ。 要件としては、 ・フォームでの投稿 ・pdf, txt, 画像などのアップロード/ダウンロード とい
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません