2010-09-02 3 views
0

Erreur irrécupérable: taille de la mémoire autorisée de 33554432 octets épuisés (tentative d'allocation de 12288 octets).Obtention: Taille de la mémoire autorisée de 33554432 octets épuisés

C'est l'erreur que j'obtiens quand j'essaye de télécharger une image sur environ 2,94 mb.

Lorsque je télécharge une image sur 100 Ko et que tout fonctionne correctement. Pourquoi est-ce?

Comment puis-je faire une restriction, donc si vous téléchargez plus de xx octets alors vous obtiendrez erreur qui est trop grand, donc je ne reçois pas cette erreur fatale.

i commencé à le faire à la forme

$max_file_size = 8388608; 
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size ?>"> 

Voici mon upload de fichier:

<?php 
include "dbc.php"; 

$directory_self = str_replace(basename($_SERVER['PHP_SELF']), '', $_SERVER['PHP_SELF']); 

$uploadsDirectory = $_SERVER['DOCUMENT_ROOT'] . $directory_self . 'images/profilePhoto/'; 

$uploadForm = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'editProfile.php'; 

$uploadSuccess = 'http://' . $_SERVER['HTTP_HOST'] . $directory_self . 'home.php'; 

$fieldname = 'file'; 


// possible PHP upload errors 
$errors = array(1 => 'php.ini max file size exceeded', 
       2 => 'html form max file size exceeded', 
       3 => 'file upload was only partial', 
       4 => 'no file was attached'); 

// check the upload form was actually submitted else print form 
isset($_POST['submit']) 
    or error('You need to upload a profilephoto, no?', $uploadForm); 

// check for standard uploading errors 
($_FILES[$fieldname]['error'] == 0) 
    or error($errors[$_FILES[$fieldname]['error']], $uploadForm); 

// check that the file we are working on really was an HTTP upload 
@is_uploaded_file($_FILES[$fieldname]['tmp_name']) 
    or error('not an HTTP upload', $uploadForm); 

// validation... since this is an image upload script we 
// should run a check to make sure the upload is an image 
@getimagesize($_FILES[$fieldname]['tmp_name']) 
    or error('only image uploads are allowed', $uploadForm); 

// make a unique filename for the uploaded file and check it is 
// not taken... if it is keep trying until we find a vacant one 
$now = time(); 
while(file_exists($uploadFilename = $uploadsDirectory.$now.'-'.$_FILES[$fieldname]['name'])) 
{ 
    $now++; 
} 

// now let's move the file to its final and allocate it with the new filename 
makeThumbnail($_FILES[$fieldname], 122, 160, $v[id]); 
@move_uploaded_file($_FILES[$fieldname]['tmp_name'], $uploadFilename) 
    or error('receiving directory insuffiecient permission', $uploadForm); 
$filnamn = $now.'-'.$_FILES[$fieldname]['name']; 
    mysql_query("UPDATE users_profile SET photo = '$filnamn' WHERE uID = '$v[id]'") or die(mysql_error()); 
// If you got this far, everything has worked and the file has been successfully saved. 
// We are now going to redirect the client to the success page. 
echo "Du har nu bytt profillbild!"; 
// make an error handler which will be used if the upload fails 
function error($error, $location, $seconds = 5) 
{ 
    header("Refresh: $seconds; URL=\"$location\""); 
    echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"'."\n". 
    '"http://www.w3.org/TR/html4/strict.dtd">'."\n\n". 
    '<html lang="en">'."\n". 
    ' <head>'."\n". 
    '  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">'."\n\n". 
    '  <link rel="stylesheet" type="text/css" href="stylesheet.css">'."\n\n". 
    ' <title>Upload error</title>'."\n\n". 
    ' </head>'."\n\n". 
    ' <body>'."\n\n". 
    ' <div id="Upload">'."\n\n". 
    '  <h1>Upload failure</h1>'."\n\n". 
    '  <p>An error has occured: '."\n\n". 
    '  <span class="red">' . $error . '...</span>'."\n\n". 
    '  The upload form is reloading</p>'."\n\n". 
    ' </div>'."\n\n". 
    '</html>'; 
    exit; 
} // end error handler 
?> 

fonction MakeThumbnail()

+2

http://stackoverflow.com/questions/2772198/fatal-error-allowed-memory-size-exhausted est l'un des nombreux postes qui demandent à la même problème – DrColossos

+0

S'il vous plaît montrer un code PHP réel et ce que vous faites avec le téléchargement de fichiers. –

+0

Ok, je vais inclure le script de téléchargement de fichiers maintenant – Karem

Répondre

4

On dirait que c'est le memory_limit global, non la limite de téléchargement. Traitez-vous l'image une fois téléchargée avec GD?

Si tel est le cas, les images volumineuses nécessiteront beaucoup plus de mémoire si vous effectuez un grand nombre de post-traitement sur les téléversements - dans ce cas essayez d'augmenter le memory limit, si vous faites quelque chose de plus simple il y a probablement une autre cause de la grande utilisation de la mémoire ...

+0

Pourquoi le vote à la baisse? En regardant les commentaires dans la question, cela semble avoir été la bonne solution et corrigé le problème du PO? – Simon

0

très simple Créez un fichier appelé « php.ini » dans le dossier « wp-admin » de l'installation wordpress.

Ajouter le texte suivant au fichier:

memory_limit = 256M ; 
Questions connexes