$ git clone http://thingshare.ion.nu/thingshare.git
commit a6af556ce7067864ef8be6926dc67d58f7effb1f
Author: Alicia <...>
Date:   Tue Jul 28 17:39:25 2020 +0200

    Take post_max_size into account for upload limits.

diff --git a/editthing.php b/editthing.php
index 4ca36ee..e28d40d 100644
--- a/editthing.php
+++ b/editthing.php
@@ -156,18 +156,24 @@ while($row=mysqli_fetch_assoc($res))
 $selected=(($license=='other')?' selected':'');
 $licenses.='<option value="other"'.$selected.'>'._('Other (see description)').'</option>';
 
-$maxsize=ini_get('upload_max_filesize');
-// Translate to bytes for the MAX_FILE_SIZE input
-switch(strtoupper(substr($maxsize,-1)))
+$maxsize=-1;
+for(Array('upload_max_filesize','post_max_size') as $name)
 {
-  case 'Y': $maxsize=(int)$maxsize*1024;
-  case 'Z': $maxsize=(int)$maxsize*1024;
-  case 'E': $maxsize=(int)$maxsize*1024;
-  case 'P': $maxsize=(int)$maxsize*1024;
-  case 'T': $maxsize=(int)$maxsize*1024;
-  case 'G': $maxsize=(int)$maxsize*1024;
-  case 'M': $maxsize=(int)$maxsize*1024;
-  case 'K': $maxsize=(int)$maxsize*1024;
+  $size=ini_get($name);
+  // Translate to bytes for the MAX_FILE_SIZE input
+  switch(strtoupper(substr($size,-1)))
+  {
+    case 'Y': $size=(int)$size*1024;
+    case 'Z': $size=(int)$size*1024;
+    case 'E': $size=(int)$size*1024;
+    case 'P': $size=(int)$size*1024;
+    case 'T': $size=(int)$size*1024;
+    case 'G': $size=(int)$size*1024;
+    case 'M': $size=(int)$size*1024;
+    case 'K': $size=(int)$size*1024;
+  }
+  if($maxsize<0){$maxsize=$size;}
+  $maxsize=min($maxsize, $size);
 }
 if($error!=''){$error='<div class="error">'.$error.'</div>';}
 ?>
@@ -211,7 +217,7 @@ function morefiles(prev)
 <?=$error?>
 <form enctype="multipart/form-data" method="post">
   <?=nonce()?>
-  <input type="hidden" name="MAX_FILE_SIZE" value="<?=$maxsize?>" /><!-- This limit is taken from the upload_max_filesize value in php.ini -->
+  <input type="hidden" name="MAX_FILE_SIZE" value="<?=$maxsize?>" /><!-- This limit is taken from the upload_max_filesize and post_max_size values in php.ini -->
   <?=_('Name:')?> <input type="text" name="name" value="<?=htmlentities($name)?>" /><br />
   <?=_('Description:')?><br />
   <textarea name="description" rows="15" style="width:100%;" onchange="document.getElementById('mdpreview').innerHTML='Markdown preview:<br />'+Mdjs.md2html(this.value.replace(/&/g,'&amp;amp;').replace(/</g,'&amp;lt;'));" onkeyup="this.onchange();"><?=htmlentities($description)?></textarea><br />
diff --git a/setup.php b/setup.php
index e538e4c..e0684c6 100644
--- a/setup.php
+++ b/setup.php
@@ -32,21 +32,30 @@ if($sessiontime<3*3600)
   print('<p>Warning! session.gc_maxlifetime in php.ini is set to '.$sessiontime.' seconds ('.$humantime.') which means sessions will end after just '.$humantime.' of inactivity. Over '.(4*3600).' (4 hours) is recommended</p>');
 }
 // Max upload filesize
-$maxsize=ini_get('upload_max_filesize');
-switch(strtoupper(substr($maxsize,-1)))
+$maxsize=-1;
+for(Array('upload_max_filesize','post_max_size') as $name)
 {
-  case 'Y': $maxsize=(int)$maxsize*1024;
-  case 'Z': $maxsize=(int)$maxsize*1024;
-  case 'E': $maxsize=(int)$maxsize*1024;
-  case 'P': $maxsize=(int)$maxsize*1024;
-  case 'T': $maxsize=(int)$maxsize*1024;
-  case 'G': $maxsize=(int)$maxsize*1024;
-  case 'M': $maxsize=(int)$maxsize*1024;
-  case 'K': $maxsize=(int)$maxsize*1024;
+  $size=ini_get($name);
+  switch(strtoupper(substr($size,-1)))
+  {
+    case 'Y': $size=(int)$size*1024;
+    case 'Z': $size=(int)$size*1024;
+    case 'E': $size=(int)$size*1024;
+    case 'P': $size=(int)$size*1024;
+    case 'T': $size=(int)$size*1024;
+    case 'G': $size=(int)$size*1024;
+    case 'M': $size=(int)$size*1024;
+    case 'K': $size=(int)$size*1024;
+  }
+  if($maxsize<0 || $size<$maxsize)
+  {
+    $maxsize=$size;
+    $maxname=$name;
+  }
 }
 if($maxsize<50*1024*1024)
 {
-  print('<p>Warning! upload_max_filesize in php.ini limits uploads to '.ini_get('upload_max_filesize').'. Over 50M is recommended</p>');
+  print('<p>Warning! upload_max_filesize and post_max_size in php.ini limits uploads to '.ini_get($maxname).'. Over 50M is recommended</p>');
 }
 // Step 1: PHP Modules
 $modules=Array();