1. ホーム
  2. Web プログラミング
  3. PHP プログラミング
  4. phpのヒント

phpでファイルがアップロードされない場合の解析例と解決策

2022-01-14 21:03:12

1. アップロードされるファイルのサイズを設定するためにphp.iniを修正します。

2. httpd.conf に "php_value upload_max_filesize "300M"" を追加してください。

3. サーバーを再起動するだけです。

ThinkPhpフレームワークで小さな画像ファイルのアップロードは成功し、大きなファイルのアップロードは失敗します。

後日、phpがアップロードするファイルのサイズを制限していることが原因だと調べて、php.iniを以下のように修正しました。

upload_max_filesize = 300M
post_max_size = 300M

サーバーを再起動しても、まだ同じで、問題は解決していません。

解決方法は以下の通りです。httpd.confに以下を追加してください。

php_value upload_max_filesize "300M"
php_value post_max_size "300M"

もう一度サーバーを再起動すると、OK!

ナレッジエクステンションです。

エラー処理

ファイル配列のエラー属性の判定処理。

$error=$myfile['myfile']['error'];
  if ($error==0){//0, means the upload was successful
    if (move_uploaded_file($tmp,"userpic/". $picname)) {
      echo "Move file successfully";
    }else{
      echo "Failed to move file";
    }
  }else{//not 0, match error message
    switch ($error){
      case 1:
        echo "Maximum file upload limit exceeded";//upload_max_filesize in php.ini
        break;
      case 2:
        echo "Exceeded form file size limit";//MAX_FILE_SIZE option in HTML form
        break;
      case 3:
        echo "The file was partially uploaded";
        break;
      case 4:
        echo "No files selected for upload";
        break;
      case 7://file write failed
      case 8:
        echo "System error";
        break;
    }
  }



アップロードの制限

フロントエンドでは、アップロードできるファイルの種類とサイズに制限を設定することができます。

<! --form hidden field to limit upload size -->
<input type="hidden" name="MAX_FILE_SIZE" value="2097152">
<! --accept Restrictions on file types -->
<input type="file" name="myfile" accept="image/jpeg,image/png">



制限の単位がバイトであることに注意してください

サーバー側では、レスポンスの制限も行います。

$size=$myfile['size'];//Get the file size
$MaxSize=2097152;//set the maximum allowed bytes
$type=$myfile['type'];//Get the image type
$AllowTypr=array('image/jpeg','image/png','image/gif');//allow type array
if ($error==0){//0, means the upload was successful
  if ($size>$MaxSize){
    echo "<script>alert('File size exceeded limit');</script>";
    echo "<script>history.back(1);</script>";
    exit();
  }
  if (!in_array($type,$AllowTypr)){
    echo "<script>alert('Please upload the correct image type');</script>";
    echo "<script>history.back(1);</script>";
    exit();
  }



今回はphpのファイルがアップロードされない例の解析と解決策について紹介しましたが、もっと関連するphpのファイルがアップロードされない解決策の内容はBinaryDevelopの過去記事を検索するか、以下の関連記事を引き続き閲覧してください!今後ともBinaryDevelopをよろしくお願いします。