webForumDet fria alternativet

Maximum execution time of 30 seconds exceeded

14 svar · 578 visningar · startad av Ann-Sofie

Ann-SofieMedlem sedan mars 2003136 inlägg
#1

Det känns som att när man får meddelandet ovan försöker man ladda upp en för stor fil men så är inte fallet.

Jag använder nedanstående php-skript, mappen som både mappen files (där bilderna ska hamna) och php-filen ligger är chmoddad till 777 och bilden jag försöker ladda upp är på ca 17kb.

<?php
/*
Mycket enkelt upload-script av jostor.
Får användas fritt.
Ska fungera på alla PHP-versioner över 4.1.0,
och på de flesta system.
*/
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Ladda upp en fil</title>
</head>
<body>
<?php 

if (isset($_FILES['uplfile'])) {
	// Mappen där filerna ska hamna
	$upload_dir = 'files/';
	// De tillåtna filtyperna, separerade med komman, utan mellanrum
	$filetypes = 'jpg,gif,png';
	// Den största tillåtna storleken (80 kB)
	$maxsize = (1024*80);

	// Kontrollera att det angavs en fil
	if(empty($_FILES['uplfile']['name']))
		die('Ingen fil har valts');

	// Kontrollera storleken
	if($_FILES['uplfile']['size'] > $maxsize)
		die('Filen du valde är för stor. Maxstorleken är '.(string)($maxsize/1024).' KB.');

	// Kontrollera filtypen
	$types = explode(',', $filetypes);
	$file = explode('.', $_FILES['uplfile']['name']);
	$extension = $file[sizeof($file)-1];
	if(!in_array(strtolower($extension), $types))
		die('Du har en felaktig filtyp. Endast .jpg, .gif och .png är tillåtet!');

	// Generera unikt filnamn
	$bokstav = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6');
	$thefile = $_FILES['uplfile']['name'];
	while (file_exists($upload_dir.$thefile)) { $img = $bokstav[rand(0, count($bokstav)-1)].$thefile; }

	// Flytta filen rätt
	if (is_uploaded_file($_FILES['uplfile']['tmp_name']) && move_uploaded_file($_FILES['uplfile']['tmp_name'],$upload_dir.$thefile)) {
		echo 'Filen laddades upp!';

		/*
		Uppladdningen lyckades.
		Här kan man även lägga eventuell kod  för t.ex. databashantering.
		Filnamnet ligger i $thefile.
		Ytterliggare fält i formuläret får du som vanligt med $_POST
		*/

	} else {
		echo 'Ett fel uppstod och filen kunde inte laddas upp.';

		/*
		Uppladdningen misslyckades.
		*/
	}
}
else
{

  ?>
	<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
	Fil:&nbsp;<input type="file" name="uplfile"><br>
	<input type="submit" value="Ladda upp filen">
	</form>
  <?php

}

?>
</body>
</html>
PeddaMedlem sedan juni 20006 032 inlägg
#2

Vad har du för inställning för safe_mode ?

/red
Du har en väldigt konstig while sats som loopar oändligt

while (file_exists($upload_dir.$thefile)) { $img = $bokstav[rand(0, count($bokstav)-1)].$thefile; }

Ändra den till

while (file_exists($upload_dir.$thefile)) { $thefile = $bokstav[rand(0, count($bokstav)-1)].$thefile; }

och se om det hjälper

Ann-SofieMedlem sedan mars 2003136 inlägg
#3

Pedda skrev:

Vad har du för inställning för safe_mode ?

Vet inte, hur ser man det? Vad borde det vara och hur ändrar jag det?

Pedda skrev:

Ändra den till

while (file_exists($upload_dir.$thefile)) { $thefile = $bokstav[rand(0, count($bokstav)-1)].$thefile; }

och se om det hjälper

Ändrat men det blev tyvärr samma resultat...

PeddaMedlem sedan juni 20006 032 inlägg
#4

Inställningen för safe_mode ser du i php.ini eller genom funktionen phpinfo() men jag tror inte att det beror på safe_mode då du borde fått ett annat felmeddelande då.

Trodde att felet var i din evighetsloop för jag ser inget annat fel.

Ann-SofieMedlem sedan mars 2003136 inlägg
#5

Men jag tror ändå att du är på rätt spår!
Jag har sniffat rätt på safe_mode genom phpinfo() och där står att max_execution_time 30

Kan man ändra på det och isåfall hur? Jag har ingen fil med namn php.ini.

PeddaMedlem sedan juni 20006 032 inlägg
#6

Har du sidan på ett webbhotell så har du inte tillgång till php.ini men du kan lägga till

ini_set("max_execution_time", 120);

överst i skriptet för att öka tiden till 120 sek istället.

Ann-SofieMedlem sedan mars 2003136 inlägg
#7

Det stämmer att jag har den på mitt webbhotell, jag la in din kod och det tog längre tid innan felmeddelandet kom upp. Jag ökade på tiden bara för att se vad som skulle hända. När jag var uppe i 500 (!) så kom inte något felmeddelande upp dock blev sidan bara blank och när jag gick till mappen files som då ligger i samma mapp som php-filen var den ändå tom...

Bra att det inte blev något felmeddelande, men varför kom inte bilden in i mappen files och även om det hade fungerat är det ju på tok för lång uppladdningstid...

Blir snart tokig...

PeddaMedlem sedan juni 20006 032 inlägg
#8

Är nu vid en dator med php installerat och jag har testat skriptet.

Efter att jag ändrar while satsen så fungerar uppladdningen både med safe_mode On eller Off och utan att ändra max_execution_time.

Ann-SofieMedlem sedan mars 2003136 inlägg
#9

Låter toppen - hur ska jag ändra while satsen?

PeddaMedlem sedan juni 20006 032 inlägg
#10

Jag har bara ändrat så som jag skrev i mitt första svar, alltså ändrat $img till $thefile.
http://www.webforum.nu/showthread.php?p=1271071#post1271071

Ann-SofieMedlem sedan mars 2003136 inlägg
#11

Jo, nu när jag ändrar i while satsen så får jag nedanstående meddelande. Har du testat ditt skript skarpt utan att det blir felmeddelande?
Jag har testat med både 755 och 777 (chmod) med samma resultat.

Warning: move_uploaded_file(files/jenny_port.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied domains/mindomän.se/public_html/form/upload.php on line 46

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/var/uploads/phpD2F4qg' to 'files/jenny_port.jpg' in domains/mindomän.se/public_html/form/upload.php on line 46
Ett fel uppstod och filen kunde inte laddas upp.

PeddaMedlem sedan juni 20006 032 inlägg
#12

Kör webbhotellet med Windows eller Linux?
Om det är Windows så kan du inte chmodda en mapp utan du måste sätta rättigheterna från kontrollpanelen om dom har den funktionen eller ringa till dom och be dom sätta rättigheterna på mappen.

Ann-SofieMedlem sedan mars 2003136 inlägg
#13

Linux och jag har chmoddat den i kontrollpanelen. Tror du att det är rättigheterna som är problemet? då är det kanske webbhotellet jag ska kontakta för hjälp?

Ann-SofieMedlem sedan mars 2003136 inlägg
#14

Ok nu funkar det!! Jag har slarvigt nog bara chmoddat mappen och inte mappen files som ligger i form-mappen... Sorry för att jag var så slarvig men super tack för all din hjälp!!

PeddaMedlem sedan juni 20006 032 inlägg
#15

np, bra att det löste sig

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)