$ 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;').replace(/</g,'&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();