質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

4564閲覧

PHP:is_uploaded_file がFALSEを返す

Seans

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/05/04 08:12

編集2020/06/04 03:16

前提・実現したいこと

PHPで入力フォームを作成しています。
CSVファイルを取り込む機能を実装中に以下の問題が発生しました。

発生している問題・エラーメッセージ

$_FILESのエラーコードは0だが、
is_upload_file関数がFALSEを返して以降の処理に進めない

該当のソースコード

html

1<form method="post" name="input_form" target="_top" action="./index.php" enctype="multipart/form-data"> 2 3<input type="file" name="IMPORT_FILE" id="IMPORT_FILE" /> 4

PHP

1print_r($_FILES); 2 3$import_file = $_FILES['IMPORT_FILE']['tmp_name']; 4print_r($import_file); 5 6if(!empty($import_file)){ 7 print_r("ファイルは正常です"); 8}else{ 9 print_r("ファイルが空です"); 10} 11 12if(is_uploaded_file($import_file)){ 13 print_r("アップロード完了"); 14}else{ 15 print_r("アップロードできませんでした"); 16}

print_rの結果

PHP

1Array ( [IMPORT_FILE] => Array ( [name] => test.csv [type] => application/vnd.ms-excel [tmp_name] => /tmp/phpWUmWIj [error] => 0 [size] => 21 ) ) 2 3/tmp/phpWUmWIj 4 5ファイルは正常です 6 7アップロードできませんでした 8

試したこと

is_uploaded_file($import_file)を
is_uploaded_file(realpath($import_file))に変えてみても症状は同じでした。

move_uploaded_fileを実行したところFALSEが返ってきました。

2020/06/04追記

PHP

1$import_file = $_FILES['IMPORT_FILE']['tmp_name']; 2echo substr( sprintf( '%o', fileperms($import_file)), -4); 3 4// 結果、0が返ってくる 5// ただし、/tmp ディレクトリのパーミッションは777

補足情報(FW/ツールのバージョンなど)

OS:Amazon Linux 64bit
PHP 5.6.26

php.iniの設定

項目設定値
file_uploadsOn
post_max_size20M
upload_max_filesize30M
memory_limit1024M
upload_tmp_dir
max_file_uploads20

考えられる原因などご教示いただけますと幸いです。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/05/04 09:33

move_uploaded_fileでファイルを移動させた場合はどうでしょう
退会済みユーザー

退会済みユーザー

2020/05/04 12:03 編集

webサーバープロセスが書き込めないディレクトリに一時ファイルが作られようとしていたりするんだろうか? webサーバープロセスの書き込み権限のあるディレクトリを upload_tmp_dir に指定したら、進展するかな? ちなみに実行環境はWindowsなのかMacOSなのかCentOSなのかとか、くわしく。
Seans

2020/05/08 01:19

>m.ts10806 move_uploaded_fileもFALSEを返します…。
Seans

2020/05/08 01:26

>m6u なるほど…!確認してみます。 実行環境はAmazon Linux 64bitです。
m.ts10806

2020/05/08 02:25

質問は編集できますので適宜追記してください
guest

回答2

0

自己解決

こちら解決しました。

独自開発しているフレームワークの処理にて
POST送信されたファイルを別のディレクトリに移動していたことが原因でした。

投稿2020/11/04 01:38

Seans

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PHP

1$import_file = $_FILES['IMPORT_FILE']['tmp_name']; 2print_r($import_file);

上記の出力で

Array ( [IMPORT_FILE] => Array ( [name] => test.csv [type] => application/vnd.ms-excel [tmp_name] => /tmp/phpWUmWIj [error] => 0 [size] => 21 ) )

この結果はおかしいです。
「'tmp_name']まで指定しているのですから出力結果はstring(/tmp/phpWUmWIj)になるはずです。
エラーが出ているなら

PHP

1$import_file = $_FILES;

このようにしていませんか?

投稿2020/05/12 10:04

rjunakc

総合スコア368

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Seans

2020/05/13 08:57

わかりづらくて申し訳ありません。 print_r($_FILES); $import_file = $_FILES['IMPORT_FILE']['tmp_name']; print_r($import_file); 前者のprint_rの結果が Array ( [IMPORT_FILE] => Array ( [name] => test.csv [type] => application/vnd.ms-excel [tmp_name] => /tmp/phpWUmWIj [error] => 0 [size] => 21 ) ) 後者が /tmp/phpWUmWIj です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問