Ограничение в размера на файла в php или БД?

perer

Registered
Здравейте!
Имам една система за видео галерия. Добра е, върши ми работа, но до някъде. Има проблем и той е следния :)
Качва само виеофайлове с малък размер. А мен това не ме устройва. Хоста няма ограничение в размера на файловете и затова реших, че проблема е в php кода или някъде по базата данни. Не знам къде е? :P Не съм го писал аз, защото не го знам тоз език, но ако някой знае как да го оправя ще съм му много благодарен. Ето кода, който качва файловете:
PHP:
if($kacheno == 1)
	{
		$video = $_FILES['video']["name"];
		$end = end(explode(".", $video));
		if($end == "flv" || $end == "mp4" || $end == "swf") {
			move_uploaded_file($_FILES['video']["tmp_name"], "video/" . $_FILES['video']['name']);
			$add = mysql_query("INSERT INTO clips VALUES ('','$title','$descript','$data','$cat','$picture','$video')") or die (mysql_error());
			 $html .= 'Клипа е добавен! Моля изчакайте...';
		}else  $html .= 'Невалиден формат на клипа';
	}
echo "<META HTTP-EQUIV='refresh' CONTENT='1; URL=video_upload.php'>";
}
}

Благодаря! :)
 
Добави най-отгоре:
PHP:
ini_set('max_upload_filesize', 8388608); 
ini_set( 'upload_max_size' , '64M' );
ini_set( 'post_max_size', '64M' );
ini_set( 'max_execution_time', '300' ); 
'
 
При качването на файла проверявай за големината

Код:
if($_FILES["file"]["size"] > 1024)
{
echo 'голям файл';
}
else
{
echo 'ok';
}

1024 = 1KB

Големината трябва да я пишеш в байти (B) :)
 
Сложи си на всяка по-съществена стъпка запис в някакъв лог файл че е стигнал до тук и ще видиш къде ти спира кода.
примерно:
file_put_contents('upload.log',"Step1:".$filename." (".$filesize.")\n");
или някаква друга полезна дабъг информация.

Би трябвало да се ориентираш какво се случва.
 
То само си създава log файл. Ето какво пише вътре
PHP Warning: POST Content-Length of 30202273 bytes exceeds the limit of 20971520 bytes in Unknown on line 0
Не става, колкото и да променях числата в ini _set, както ме посъветваха във втория пост
Ето целия файл:
PHP:
<?php

include("config.php");

ini_set( 'max_upload_filesize', 8388608); 
ini_set( 'upload_max_size' , '256M' );
ini_set( 'post_max_size', '256M' );
ini_set( 'max_execution_time', '300' ); 

if($_POST['submit'])
{
	
$title = htmlspecialchars($_POST['title']);
$descript = htmlspecialchars($_POST['descript']);	
$cat = is_numeric($_POST['cat']);	
$data = date("Y-m-d H:i");

if($title == NULL || $descript == NULL || $_FILES['picture']['name'] == NULL || $_FILES['video']['name'] == NULL || $cat == NULL) {
	$html = "Моля попълни полетата";	
}
else
{
	
//-------------------------------------------------------
//-------------	  	UPLOAD PICTURE 	---------------------
//-------------------------------------------------------

if ((($_FILES["picture"]["type"] == "image/gif")|| ($_FILES["picture"]["type"] == "image/jpeg")|| 
($_FILES["picture"]["type"] == "image/png")) && ($_FILES["picture"]["size"] < (4 * 1024 * 1024)))
  {
  if ($_FILES["picture"]["error"] > 0)
    {  $html .= "Return Code: " . $_FILES["picture"]["error"] . "<br>";  
	} else
    {
      move_uploaded_file($_FILES["picture"]["tmp_name"], "video/" . $_FILES["picture"]["name"]);
      $picture = $_FILES["picture"]["name"];
	  $kacheno = "1";
    }
  }
else   $html .= "Невалиден формат на снимката";

//-------------------------------------------------------
//-------------	  	UPLOAD VIDEO 	---------------------
//-------------------------------------------------------	

	if($kacheno == 1)
	{
		$video = $_FILES['video']["name"];
		$end = end(explode(".", $video));
		if($end == "flv" || $end == "mp4" || $end == "swf") {
			move_uploaded_file($_FILES['video']["tmp_name"], "video/" . $_FILES['video']['name']);
			$add = mysql_query("INSERT INTO clips VALUES ('','$title','$descript','$data','$cat','$picture','$video')") or die (mysql_error());
			 $html .= 'Клипа е добавен! Моля изчакайте...';
		}else  $html .= 'Невалиден формат на клипа';
	}
echo "<META HTTP-EQUIV='refresh' CONTENT='1; URL=video_upload.php'>";
}
}

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../videobox/js/mootools.js"></script>
<script type="text/javascript" src="../videobox/js/swfobject.js"></script>
<script type="text/javascript" src="../videobox/js/videobox.js"></script>
<link rel="stylesheet" href="../videobox/css/videobox.css" type="text/css" media="screen">
<title> Админ панел -> Видео</title>
<style type="text/css">
body{
	background: url('#') repeat-x;
	width: 99,99%;
	height: 100%;
	color: white;
	font-family: arial;
	font-size: 12px;
	padding: 3px;
}
a{
	text-decoration: none;
	color: white;
}
a:visited{
	text-decoration: none; 
}
a:hover{ 
	text-decoration: none;
	color: #2b94ee;
}
</style>
</head>
<body>
<a href="admin.php"><- Обратно в админ панел</a>
<center><img src="logo.png" alt="Ciline logo" width="500" height="200"></center>
<div style="float: left; margin-top:20px; width: 100%">
<div style="float: left; width: 600px; margin-left: 150px; margin-top: 0px;"><?php echo $html; ?></div><br><br>
<table border="0" width="80%" height="100%" style="margin-left: 50px;"><tr>
<td>
	<h3>Добави клип:</h3><br>
	<form action="" enctype="multipart/form-data" method="post">
	
	Категория:       <select name="cat">
	<option value=""></option>
	<?php
	$sql1 = mysql_query("Select * from category");
	
	    while($obj = mysql_fetch_object($sql1))
	    {
	
	     echo "<option value='".$obj->category_id."'>".$obj->name."</option>";    
	     
	    }
	?>
	</select><br><br>
	
	Име на клип:  <input type="text" value="<?php echo $title; ?>" name="title">
	<br><br>
	Описание:      <textarea name="descript"  rows="5" cols="30"><?php echo $descript; ?></textarea>
	<br><br>
	Качи снимка: <input type="file" name="picture">
	<br><i>jpg, gif, png</i> <br>
	Избери клип: <input type="file" name="video">
	<br><i>flv, mp4, swf</i> <br><br>
	<input type="submit" name="submit" value="Добави видео">
	</form>
</td>
</div>
<td>
<?php

$query1 = mysql_query("Select * from clips") or die(mysql_error());
while($obj = mysql_fetch_object($query1)) {
	echo '<div style="float: left; text-align: center; margin: 0px 20px 15px 10px; width: 120px; border: 1px dashed #999;">';
	echo " <p style='font-weight: bold;'>".$obj->category_id."</p><br>";
	echo " <p style='margin-bottom: 5px;font-weight: bold;'>".$obj->title."</p>";
 echo "<a href='video/".$obj->video ."' rel='vidbox' title='".$obj->title."'>".
 "<img src='video/".$obj->picture."' width='100' height='80' border='0' alt='".$obj->title."'> </a><BR><BR>";
 echo " <a href='delete.php?id=".$obj->clip_id."'><img border='0' src='Delete.png' alt='delete'> <font color='red'>Изтрий</font> </a>";
echo "</div>";
}
?>
</td></tr></table>
</body>
</html>
 
Добави при останалите настройки и тази:

ini_set('memory_limit', '512M');

ако пак не стане сложи phpinfo(3) след всички ini_set() и дай резултата, който ти изкара да видим.
 
Извинявай, в амбицията си да не постваш излишни данни съм объркал параметъра дай това phpinfo(4).

Преди това обаче промени ini_set-овете по следния начин и пробвай:

ini_set( 'max_upload_filesize', 268435456);
ini_set( 'upload_max_size' , '268435456' );
ini_set( 'post_max_size', '268435456' );
ini_set( 'max_execution_time', '3000' );

ако пак ти гърми след тях сложи phpinfo(4) и дай да видим какво се случва. Между другото 30МБ ли се опитваш да ъплоаднеш ?
 
Да, файла е 27,8 мб, но най-вероятно ще се качват и по-големи след време. И да, отново не иска да го качи :)
Ето резултата от phpinfo-то:
4181.png
 
webdeveloper каза:
upload_max_filesize 16MB

Еми нормално е да не ти качва по-големи файлове. Увеличи лимита на хоста.
Той каза, че така не е станало. Написах му го още в първия коментар. :)
 
tedo96 каза:
webdeveloper каза:
upload_max_filesize 16MB

Еми нормално е да не ти качва по-големи файлове. Увеличи лимита на хоста.
Той каза, че така не е станало. Написах му го още в първия коментар. :)

Много ясно, че няма да стане... Какви са тия ini_set mini_set... Да си качи един php.ini файл и в него да си направи настройките.
 
Явно не приема стойностите, които му ги подаваш с ini_set. Най-лесно ще ти е да пуснеш един тикет на суперхостинг да ти променят стойностите на следните директиви в php.ini:

max_upload_filesize = 256М
upload_max_size = 256М
post_max_size = 256М
max_execution_time = 3000
memory limit = 512M

Ако очакваш файловете да са по-големи от 256МБ промени цифрите. Имай предвид като променяш стойностите, че Memory limit трябва да е поне 256МБ по-голям от максималния ти файл и погледни дали хостинг плана ти позволява такива стойности.
 
webdeveloper каза:
tedo96 каза:
webdeveloper каза:
upload_max_filesize 16MB

Еми нормално е да не ти качва по-големи файлове. Увеличи лимита на хоста.
Той каза, че така не е станало. Написах му го още в първия коментар. :)

Много ясно, че няма да стане... Какви са тия ini_set mini_set... Да си качи един php.ini файл и в него да си направи настройките.
Точно това прави ini_set(), но явно не си достатъчно запознат. :)

Иначе е добра идея да пише на съпорта. Можеш и да им кажеш да ти преместят php.ini файла, за да можеш да си го променяш сам.
 
ini_set не може да промена 50% от работите т php.ini. Както каза @webdeveloper нека си добави негов php.ini файл или ако е на негов хост, да си го промени. :?:
 
Ам, някой може ли да ми направи готов php.ini, защото аз не мога. Четох някакви статии в нета, но не става нещо. Иначе има един такъв файл в главната директория на хостинга, там където е public_html
В него промених стойностите на upload_max_filesize, но пак няма файда.
В phpinfo пише, че взима стойности от друг файл, който се намира в /usr/local/lib/php.ini , а аз нямам достъп до тази папка.
Май трябва да пиша на съпорта на хоста :)
 
perer каза:
Ам, някой може ли да ми направи готов php.ini, защото аз не мога. Четох някакви статии в нета, но не става нещо. Иначе има един такъв файл в главната директория на хостинга, там където е public_html
В него промених стойностите на upload_max_filesize, но пак няма файда.
В phpinfo пише, че взима стойности от друг файл, който се намира в /usr/local/lib/php.ini , а аз нямам достъп до тази папка.
Май трябва да пиша на съпорта на хоста :)
Влез в този файл php.ini където ти е в public_html и вътре въведи:
Код:
upload_max_size = "20M"
post_max_size = "20M"
 

Back
Горе