Kā atrisināt PHP fatālu kļūdu: ir izsmelts atļautais atmiņas apjoms 8388608 baiti

Viena no visbiežāk sastopamajām un nomāktajām kļūdām, ar kuru saskārušies PHP kodētāji, skan: “Fatāla kļūda: ir izsmelts atļautais atmiņas lielums 8388608 baitu…”, kam seko kaut kas līdzīgs “(mēģināju piešķirt XXXX baitus) / home /www/file.module 12. rindā.” Šī fatālā PHP kļūda apgriezta uz augšu, jo pēc noklusējuma PHP jebkuram skriptam ir ierobežots atmiņas apjoms 8 MB. Patiesībā tā ir laba lieta, jo jūs nevēlaties, lai negodīgs PHP skripts nolaistu jūsu serveri, izmantojot visu atmiņu. Bet reizēm jums būs PHP skripts, kas parasti pārsniedz 8 MB ierobežojumu (teiksim, importēšanai vai augšupielādēšanai). Lai izvairītos no kļūdas ziņojuma “Fatāla kļūda: atļautais atmiņas apjoms ir 8388608 baiti izsmelti…”, vienkārši augšpusē skriptā ievietojiet šo koda rindu:

ini_set (“memory_limit”, ”16M“);

atmiņas_limits

Tas drīzāk iestatīs jūsu atmiņas ierobežojumu līdz 16 MBnekā 8 MB. Jūs varat un vajadzētu vijot ar šo numuru, lai tas būtu pēc iespējas zemāks, neatkārtojot šo kļūdas ziņojumu. Tas mainīs tikai konkrētā PHP faila atmiņas ierobežojumu.

Pārmaiņus jūs varat mainīt savu php.ini failu, lai palielinātu atmiņas apjomu. Tas ietekmēs visus servera skriptus. Vienkārši atveriet php.ini un atrodiet rindu, kas skan “memory_limit”, un mainiet to:

atmiņas_limits = 16 miljoni

Fatāla kļūda: 134217728 atļautais atmiņas lielums ir izsmelts

Esmu pamanījis savā PHP.ini fails, ka mana noklusējuma vērtība ir daudz augstāka - 128 miljoni. Tātad, ja es kādreiz saņemtu šo kļūdas ziņojumu, tas skan: “Liktenīga kļūda: 134217728 baitu atļautais atmiņas apjoms ir izsmelts…”, un acīmredzot tā ir daudz lielāka problēma. Bet tam ir tāds pats risinājums kā “Fatāla kļūda: ir atļauts izmantot 8388608 baitu atmiņas lielumu…” vai “Fatāla kļūda: 16777216 baitu atļautais atmiņas apjoms ir izsmelts…” vai tamlīdzīgam. Acīmredzot noklusējuma memory_limit tika palielināts no 8 miljoniem līdz 16 miljoniem PHP 5.2.0, un tagad tas ir 128 miljoni PHP 5.3.0, kas izskaidro, kāpēc šo kļūdas ziņojumu var nesaņemt vispār.

Atmiņas ierobežojumu var arī atspējot, PHP.ini iestatot memory_limit uz –1.

atmiņas_limits = -1

Tomēr acīmredzamu iemeslu dēļ tā parasti nav laba ideja.

Piezīme. Atmiņas_limit līniju var izmantot arī .htaccess lapā.

Tagad atcerieties, ka tas ir tikai risinājums. Tiešām, jūsu PHP skriptam vajadzētu nepārsniedz 8 MB, ja vien augšupielādējat failus vaidarot kaut ko citu, kas acīmredzami prasa daudz atmiņas. Tas, kas jums patiešām būtu jādara, ir mēģināt noskaidrot, kāpēc jūsu skripts izmanto tik daudz atmiņas, un mēģināt to labot. Viens veids, kā noskaidrot, cik daudz atmiņas izmanto jūsu PHP skripts, ir izmantot funkciju memory_get_usage () PHP. Vienkārši atkārtojiet to jebkurā skripta vietā, lai uzzinātu, kur palielinās jūsu atmiņas lietojums:

echo memory_get_usage ();

Ja šo kļūdas ziņojumu saņemat Drupal vai Joomla, iespējams, vainīgais ir jauns modulis vai pakotne. Piemēram, Drupal tiek ielādēta lapa admin / moduļi katrs modulis jūsu Drupal instalācijā, ko var iegūtmatains, ja pielāgotais modulis ir kļūdains, bojāts vai uzlauzts. Mēģiniet atslēgt moduļus pa vienam, lai identificētu, kas mazina ballīti. Daži hostinga pakalpojumu sniedzēji arī ignorēs jūsu mēģinājumus mainīt jūsu PHP koda atmiņas ierobežojumus, tāpēc jums, iespējams, vajadzēs sazināties ar mitināšanas atbalstu. Es esmu atradis, ka dažreiz man ir jārediģē php.ini fails un dažreiz jāievieto kods .htaccess failā. Katrā ziņā, cerams, ar šo informāciju pietiek, lai jūs varētu pa ceļam!

0

Līdzīgi raksti

Atstājiet savu komentāru