前提・実現したいこと
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_uploads | On |
post_max_size | 20M |
upload_max_filesize | 30M |
memory_limit | 1024M |
upload_tmp_dir | |
max_file_uploads | 20 |
考えられる原因などご教示いただけますと幸いです。
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー