Dozwolony rozmiar pamięci X bajtów

Fatal error: dozwolony rozmiar pamięci 67108864 bajtów wyczerpany (próbowano przydzielić 13965430 bajtów)

PHPInfo pokazuje, że mam memory_limit 128M, więc jestem zdezorientowany, dlaczego błąd mówi, że mam tylko 64M. czy phpinfo może zgłosić nieprawidłowo? Lub aby PHP używało dwóch oddzielnych php.inis?

Błąd był spowodowany wywołaniem ini_set w jednym z podstawowych plików php, które mój współpracownik dodał bez mojej wiedzy.

Author: Uwe Keim, 2010-11-04

7 answers

Konfiguracja PHP może być ustawiona w wielu miejscach:

  1. master system php.ini (zwykle gdzieś w /etc)
  2. gdzieś w konfiguracji Apache 'a (httpd./ align = "left" / plik conf, via php_value)
  3. CLI & CGI mogą mieć inny php.ini (użyj polecenia php -i | grep memory_limit, aby sprawdzić conf CLI)
  4. lokalne .pliki htaccess (również php_value)
  5. in-script (via ini_set())

W wyjściu PHPinfo wartość "Master" jest domyślną wartością skompilowaną, a " Local" wartość jest tym, co faktycznie obowiązuje. Może być niezmieniony od domyślnego lub przesłonięty w dowolnej z powyższych lokalizacji.

Zauważ również, że PHP na ogół ma inne .pliki ini do operacji w wierszu poleceń i na serwerze WWW. Sprawdzanie phpinfo() z linii poleceń wyświetli inne wartości niż w przypadku uruchomienia go w skrypcie internetowym.

 33
Author: Marc B,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-01 07:31:17
ini_set('memory_limit', '128M'); 

Lub

php.ini  =>  memory_limit = 128M

Lub

php_value memory_limit 128M
 21
Author: şarkı dinle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-27 21:11:21

Miałem ten sam problem. Znalazłem odpowiedź:

ini_set('memory_limit', '-1');

Uwaga: zajmie to nieograniczone wykorzystanie pamięci serwera.

Aktualizacja: Użyj tego ostrożnie, ponieważ może to spowolnić system, jeśli skrypt PHP zacznie używać nadmiernej ilości pamięci, powodując duże wykorzystanie przestrzeni wymiany. Możesz tego użyć, jeśli wiesz, że program nie zajmie dużo pamięci, a także nie wiesz, ile go teraz ustawić. Ale w końcu przekonasz się, ile pamięci potrzebujesz do tego program.

Należy zawsze ograniczyć pamięć jako pewną wartość, na którą odpowiada @şarkı dinle.

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

Dawanie nieograniczonej pamięci jest złą praktyką, raczej powinniśmy dać jakiś maksymalny limit, który możemy znieść, a następnie zoptymalizować nasz kod lub dodać kilka RAM.

 13
Author: Somnath Muluk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-23 09:54:15

Pamięć musi być skonfigurowana w kilku miejscach.
ustawić memory_limit na 512M:

sudo vi /etc/php5/cgi/php.ini
sudo vi /etc/php5/cli/php.ini
sudo vi /etc/php5/apache2/php.ini Or /etc/php5/fpm/php.ini

Restart serwisu:

sudo service service php5-fpm restart
sudo service service nginx restart

Lub

sudo service apache2 restart

Wreszcie powinno rozwiązać problem memory_limit

 4
Author: oussaka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-08 08:16:09

Jeśli jesteś pewien, że po skonfigurowaniu php uruchomiłeś ponownie Apache.ini, to może patrzysz na złe php.plik ini

 3
Author: stillstanding,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-04 12:27:33

Jeśli zwiększając limit pamięci pozbyłeś się błędu i twój kod teraz działa, musisz podjąć środki, aby zmniejszyć zużycie pamięci. Oto kilka rzeczy, które możesz zrobić, aby go zmniejszyć:

Jeśli czytasz pliki, czytaj je wiersz po wierszu zamiast wczytać cały plik do pamięci. Spójrz na fgets i SplFileObject:: fgets. Uaktualnij PHP do nowej wersji, jeśli używasz PHP 5.3. PHP 5.4 i 5.5 zużywają znacznie mniej pamięci.

Unikaj ładowania dużych zbiorów danych do tablicy. Zamiast tego przejdź do przetwarzania mniejszych podzbiorów większego zbioru danych i, jeśli to konieczne, utrwal dane w bazie danych, aby zmniejszyć zużycie pamięci.

Wypróbuj najnowszą wersję lub podrzędną wersję biblioteki innej firmy (na przykład 1.9.3 w porównaniu z 1.8.2) i użyj tej, która jest bardziej stabilna. Czasami nowsze wersje bibliotek są pisane wydajniej.

Jeśli masz nietypowe lub niestabilne rozszerzenie PHP, spróbuj je zaktualizować. Może mieć wyciek pamięci.

Jeśli masz do czynienia z dużymi plikami i po prostu nie możesz ich odczytać linia po linii, spróbuj rozbić plik na wiele mniejszych plików i przetworzyć je indywidualnie. Wyłącz rozszerzenia PHP, których nie potrzebujesz.

W obszarze problemowym wyłącz zmienne, które zawierają duże ilości danych i nie są wymagane później w kodzie.

FROM: https://www.airpair.com/php/fatal-error-allowed-memory-size

 1
Author: user3806549,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-17 15:41:17
1 check current limit:
(in my os)php -i | grep limit  => memory_limit => 256M => 256M

2  locate php.ini 
php --ini =>   
Configuration File (php.ini) Path: /etc
Loaded Configuration File:         /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed:      /etc/php.d/curl.ini 
...

3 change memory_limit in php.ini
vi /etc/php.ini
memory_limit = 512M

4 restart nginx and (php-fpm if being used)
service php-fpm restart
service nginx restart
 1
Author: terwxqian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-22 03:56:58