2016-08-26 6 views
3

私はこのアップロードスクリプトが失敗している理由を理解しようとしています。 HTMLのFORMを皮切りPHPアップロード14MBファイルが失敗する

:ここ

<form role="form" action="api/upload.php" method="post" enctype="multipart/form-data"> 
    <input id="file" name="file" type="file" /> 
    <input class="btn btn-primary" type="submit" value="Upload" /> 
</form> 

は、PHPスクリプトです:

<?php 
if(isset($_FILES['file'])){ 
    $file = $_FILES['file']; 
    $target_file = basename($_FILES["file"]["name"]); 

    $file_name = $file['name']; 
    $file_tmp = $file['tmp_name']; 
    $file_size = $file['size']; 
    $file_error = $file['error']; 

    $file_ext = explode('.',$file_name); 
    $file_ext = strtolower(end($file_ext)); 

    $allowed = array('txt', 'jpg', 'xlsx', 'pptx', 'docx', 'doc', 'xls', 'pdf'); 

    if(in_array($file_ext, $allowed)){ 
    if($file_error === 0){ 
     if($file_size <= 99600000){ // this was set to 600000 
     $file_name_new = uniqid('', true) . '.' . $file_ext; 
     $file_destination = '../files/' . $file_name; 

     if(move_uploaded_file($file_tmp, $file_destination)){ 
      header("Location: ../index.php"); 
      die(); 
     } 
     else{ 
      echo "There was a problem uploading the file"; 
     } 
     } 
     else{ 
     echo "The file is too large"; 
     } 
    } 
    else{ 
     echo "There was an error uploading the file"; 
    } 
    } 
    else{ 
    echo "The file type is not allowed"; 
    } 
} 
?> 

のIFネストされたステートメントを許してください。私はyoutubeでこのビデオのオフになっていた:https://www.youtube.com/watch?v=PRCobMXhnyw

上記のコードは動作します。ファイルをアップロードすることができます。エラーが発生すると、適切なエラーメッセージが表示されます。

しかし...

私はアップロードされないファイルを見つけました。これは14MBの許可されたファイル、ワードドキュメントです。それが大きすぎるかどうかはわかりません。しかし、それでも私がアップロードしようとしたファイルが大きすぎると、file_sizeチェックを通過することはなく、対応するエラーメッセージが表示されます。

この場合、私はすべて空白の画面になります。私は最初のIF文の前後に 'hello'をエコーすることができますが、最初のIFの直後に失敗します。

なぜこれが起こっているのかわかりません。

エラーが表示された場合は、修正してください。

ありがとうございます。

+0

'$ _FILES ['file'] ['error']'のコードを見てみましたか?ゼロでなければエラーメッセージを表示します – RiggsFolly

+0

最初のIF文の後に何もエコーすることはできません。 $ file ['error']をチェックする別の方法はありますか? –

+0

何かをエコーできないのはなぜ... – RiggsFolly

答えて

4

ファイルphp.ini(その場所はお使いのオペレーティングシステムによって異なります)の値をupload_max_filesize(デフォルトでは2M)に増やし、Webサーバーを再起動するだけです。

+0

これはコメントであり、実際の回答ではありません – RiggsFolly

+0

私はすでにphp.iniファイルを更新しています。 –

+0

@HoodCoderMan Webサーバーを再起動しましたか? –

-2

php.iniファイルの設定を更新してサービスを再起動しましたが、すべて正常に機能します。ありがとうございます。

関連する問題