Πώς να λύσει PHP Σφάλμα θανάτου: Επιτρεπόμενο μέγεθος μνήμης 8388608 bytes εξαντλημένο

Ένα από τα πιο κοινά και απογοητευτικά λάθηπου αντιμετωπίζουν οι κωδικοποιητές PHP αναφέρει: "Θανάσιμο σφάλμα: Επιτρεπόμενο μέγεθος μνήμης 8388608 bytes εξαντλημένο ..." ακολουθούμενο από κάτι σαν "(προσπάθησε να διαθέσει XXXX bytes) στο /home/www/file.module στη γραμμή 12." επειδή, από προεπιλογή, η PHP έχει ένα όριο χρήσης μνήμης 8 MB για κάθε δεδομένο σενάριο. Αυτό είναι ένα καλό πράγμα, στην πραγματικότητα, επειδή δεν θέλετε ένα αδίστακτο σενάριο PHP να κατεβάσετε το διακομιστή σας, κάνοντας όλο το μνήμη. Αλλά περιστασιακά, θα έχετε ένα script PHP που κανονικά υπερβαίνει το όριο των 8 MB (για εισαγωγή ή μεταφόρτωση). Για να αντιμετωπίσετε το μήνυμα λάθους "Σκοτεινό σφάλμα: Επιτρεπόμενο μέγεθος μνήμης 8388608 bytes εξαντλημένο ...", απλά εισάγετε αυτή τη γραμμή κώδικα στο σενάριό σας στην κορυφή:

ini_set ("memory_limit", "16Μ").

memory_limit

Αυτό θα ορίσει το όριο μνήμης σας σε 16 MB, μάλλοναπό 8 MB. Μπορείτε, και πρέπει, να τρέξετε με αυτόν τον αριθμό έτσι ώστε να είναι όσο το δυνατόν χαμηλότερο χωρίς να επαναλάβετε αυτό το μήνυμα σφάλματος. Αυτό θα αλλάξει μόνο το όριο μνήμης για το συγκεκριμένο αρχείο PHP.

Εναλλακτικά, μπορείτε να αλλάξετε το αρχείο php.ini για να αυξήσετε το όριο μνήμης. Αυτό θα επηρεάσει όλα τα σενάρια στον διακομιστή σας. Απλά ανοίξτε το php.ini και βρείτε τη γραμμή που διαβάζει "memory_limit" και αλλάξτε την:

memory_limit = 16M

Σοβαρό σφάλμα: Εξαντλημένο μέγεθος μνήμης 134217728

Έχω παρατηρήσει στη δική μου PHP.ini ότι η προεπιλογή μου είναι πολύ υψηλότερη στα 128M. Έτσι, αν έβλεπα ποτέ αυτό το μήνυμα σφάλματος, θα έλεγα: "Θανάσιμο λάθος: Επιτρεπόμενο μέγεθος μνήμης 134217728 bytes εξαντλημένο ..." και προφανώς είναι ένα πολύ μεγαλύτερο πρόβλημα. Αλλά έχει την ίδια λύση με το "Θανάσιμο σφάλμα: Επιτρεπόμενο μέγεθος μνήμης 8388608 bytes εξαντλημένο ..." ή "Θανάσιμο σφάλμα: Επιτρεπόμενο μέγεθος μνήμης 16777216 bytes εξαντλημένο ..." ή οτιδήποτε άλλο. Προφανώς, η προεπιλεγμένη τιμή memory_limit αυξήθηκε από 8M σε 16M σε PHP 5.2.0 και τώρα είναι 128M για PHP 5.3.0, γεγονός που θα εξηγούσε γιατί ίσως να μην λάβετε αυτό το μήνυμα σφάλματος.

Μπορείτε επίσης να απενεργοποιήσετε το όριο μνήμης ρυθμίζοντας memory_limit στο -1 στο PHP.ini.

memory_limit = -1

Αυτό δεν είναι συνήθως μια καλή ιδέα, όμως, για προφανείς λόγους.

Σημείωση: Μπορείτε επίσης να χρησιμοποιήσετε τη γραμμή memory_limit στη σελίδα σας .htaccess.

Τώρα, θυμηθείτε, αυτό είναι μόνο ένας τρόπος αντιμετώπισης. Πραγματικά, το σενάριο PHP σας πρέπει δεν να υπερβαίνει τα 8 MB, εκτός εάν τα αρχεία που ανεβάζετε ήκάνοντας κάτι άλλο που προφανώς αναλαμβάνει πολλή χρήση μνήμης. Αυτό που πρέπει πραγματικά να κάνετε είναι να προσπαθήσετε να καταλάβετε γιατί το σενάριο σας χρησιμοποιεί τόσο πολλή μνήμη και προσπαθήστε να το διορθώσετε. Ένας τρόπος για να υπολογίσετε πόση μνήμη χρησιμοποιεί το σενάριο PHP είναι να χρησιμοποιήσετε τη λειτουργία PHP memory_get_usage (). Απλά ηχρώστε σε οποιοδήποτε σημείο του σεναρίου σας για να μάθετε πού χρησιμοποιείται η μνήμη σας:

echo memory_get_usage ();

Αν λαμβάνετε αυτό το μήνυμα σφάλματος στο Drupal ή στο Joomla, ο πιθανός ένοχος είναι μια νέα ενότητα ή πακέτο. Για παράδειγμα, στο Drupal, φορτώνεται η σελίδα admin / modules κάθε στην εγκατάσταση του Drupal που μπορείτε να αποκτήσετεμαλλιά αν μια προσαρμοσμένη μονάδα είναι buggy, διεφθαρμένη ή hacked. Δοκιμάστε να απενεργοποιήσετε τις ενότητες μία προς μία για να προσδιορίσετε ποιος φέρνει το κόμμα κάτω. Επίσης, ορισμένοι πάροχοι φιλοξενίας θα αγνοήσουν τις προσπάθειές σας να τροποποιήσετε τα όρια μνήμης για τον κώδικα PHP, ώστε να χρειαστεί να επικοινωνήσετε με την υποστήριξη φιλοξενίας σας για να σας βοηθήσουμε. Έχω βρει μερικές φορές πρέπει να επεξεργαστώ το αρχείο php.ini και μερικές φορές να βάλω τον κώδικα στο αρχείο .htaccess. Είτε έτσι είτε αλλιώς, ελπίζουμε ότι αυτές οι πληροφορίες είναι αρκετές για να σας φτάσουν στο δρόμο σας!

0

Παρόμοια άρθρα

Αφήστε ένα σχόλιο