プロが教える店舗&オフィスのセキュリティ対策術

知っている方いましたらご教授お願いいたします。

■事象
PHPにて画像ファイルのアップロードを作っています。
その際に、「jpg」なのに、アップロードできない画像ファイルがあります。

以下の、メッセージを取得する際には【15】が戻り値として返ってきます。
⇒$error = $_FILES['x']['error'];

エラー一覧をみても【15】というのは存在していないようで、
何が原因なのかがよくわかっていません。

■ファイルをvar_dumpしたところ
var_dump($_FILES['x']);
⇒出力結果
array(5) { ["name"]=> string(8) "attt.jpg" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(1) ["size"]=> int(0) }

そもそも取得できていない・・・

■原因と思われるもの??
UPできない、画像のプロパティを見てみると
詳細の色の表現が「sRGB」となっています。
これが原因でしょうか?

■ファイルアップロードに関するエラーコード。
0: エラーなし。ファイルアップロード成功。
1: ファイルサイズが、「php.ini」の「upload_max_filesize」の値を超えている。
2: ファイルサイズが、送信フォームで指定した「MAX_FILE_SIZE」の値を超えている。
3: 一部しかアップロードされなかった。
4: アップロードされなかった。
6: テンポラリフォルダがない。
7: ディスクへの書き込みに失敗。
8: PHP拡張モジュールがファイルアップロードを中止。

以上、ご回答のほどよろしくお願いいたします。

A 回答 (1件)

var_dump(array_keys(preg_grep('/^15$/', get_defined_constants())));



上記のコードを用いて、エラーコード15を表す定数に何があるかどうか、そちらのPHP環境で調べてみてください。ideone.com上で調べてみたところ

・FORCE_DEFLATE
・ZLIB_ENCODING_DEFLATE
・XML_ELEMENT_DECL_NODE
・MHASH_TIGER160
・SIGTERM
・IMAGETYPE_WBMP
・SOCKET_ENOTBLK
・XML_ERROR_BINARY_ENTITY_REF

が存在していました。「SIGTERM」は強制終了を表すシグナルです。アップロード処理中にPHPコアで何らかのエラーが発生し、強制的に実行を中断させられた、と考えるのが妥当ではないでしょうか。もし古いバージョンのPHPを使ってる場合は最新版にアップデートしてください。

アップロードの例外処理に関してはこちらを参考にどうぞ。
http://qiita.com/mpyw/items/939964377766a54d4682
http://qiita.com/mpyw/items/73ee77a9535cc65eff1e

この回答への補足

To_aru_User様

いつもありがとうございます。

早速実行したところ以下のようになりました。

array(9) {

[0]=> string(13) "FORCE_DEFLATE"
[1]=> string(21) "ZLIB_ENCODING_DEFLATE"
[2]=> string(23) "CURLE_FTP_CANT_GET_HOST"
[3]=> string(21) "XML_ELEMENT_DECL_NODE"
[4]=> string(22) "DOM_INVALID_ACCESS_ERR"
[5]=> string(14) "MHASH_TIGER160"
[6]=> string(14) "IMAGETYPE_WBMP"
[7]=> string(14) "SOCKET_ENOTBLK"
[8]=> string(27) "XML_ERROR_BINARY_ENTITY_REF" }

PHPの環境はロリポップサーバーでバージョンは「5.4」になります。

例外処理を参考にさせていただきます!
ありがとうございます。

補足日時:2013/12/21 21:58
    • good
    • 0

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