Das PHP-Speicherlimit wird in normalen PHP-Skripten nicht wirksam

Lesezeit: 6 Minuten

Darrell Dings Benutzeravatar
Darrell Ding

Ich habe das Speicherlimit von PHP auf 999 MB festgelegt, damit es in PHPInfo angezeigt wird

speicher_limit 999M 999M

wenn ich phpinfo(); verwende um es zu zeigen.

Wenn ich versuche, ein ziemlich großes Skript auszuführen, scheint es leider so, als ob die Grenze bei 256 MB liegt

Schwerwiegender Fehler: Die zulässige Speichergröße von 268435456 Bytes ist in /xxx/wp-includes/wp-db.php in Zeile 1403 erschöpft (versucht, 40 Bytes zuzuweisen).

Hat jemand eine Idee, warum oder was ich tun kann, um das Limit zu erhöhen (und dafür zu sorgen, dass es tatsächlich funktioniert)?

Wenn es hilft, verwende ich Centos5 32bit und PHP im FCGI-Modus

  • Du hast das Richtige bearbeitet php.ini? (Sehen phpinfo()oder php -i (Beachten Sie, dass die verschiedenen Sapis (Apache-Modul, cgi, cli…) anders verwenden php.inis)) Du hast deinen Server neu gestartet? Haben Sie jemals darüber nachgedacht, warum Ihre Skripte so viel Speicher benötigen?!

    – KingCrunch

    3. April 2012 um 20:33


  • memory_limit 999M 999M – sicherlich meintest du es memory_limit 999M

    – d_unvermeidlich

    3. April 2012 um 20:33

  • Legt Ihre WordPress-Installation nicht ein eigenes Speicherlimit fest? ini_set('memory_limit', ...) ?

    – Kuba

    3. April 2012 um 20:35 Uhr

  • Wie wäre es mit einer Optimierung des Skripts? Sie sollten nicht so viel Speicher benötigen.

    Benutzer557846

    3. April 2012 um 20:36 Uhr

  • Ja, ich habe die richtige php.ini bearbeitet, sie wird in phpinfo gut angezeigt

    – Darrell Ding

    3. April 2012 um 20:37 Uhr


Ich hatte ein ähnliches Problem, bei mir wurde eine zusätzliche INI-Datei mit dem Namen „99-liip-developer.ini“ geladen. Am Anfang der Datei wurde das „memory_limit“ auf 265 MB definiert, wodurch das in „php.ini“ definierte „memory_limit“ überschrieben wurde.

Ich hoffe, das hilft irgendjemandem.

  • Habe eine Datei namens www.conf in /etc/nginx/fpm/pool.d gefunden. Ich wäre nie auf die Idee gekommen, dort nachzuschauen.

    – Serienwurm

    12. Dezember 2013 um 15:47 Uhr

  • Danke schön! 🙂 Das hat mich verrückt gemacht

    – Adam Elsodaney

    26. Juli 2014 um 20:30 Uhr

  • Suchen Sie vielleicht auch nach /usr/local/lib/php.ini oder /usr/local/php/lib/php.ini

    – iforce2d

    19. August 2019 um 16:08 Uhr

  • DANKE SCHÖN! Das hat mich auch verrückt gemacht 😀

    – James

    30. Juli 2020 um 21:13 Uhr

  • In der phpinfo()-Ausgabe gibt es den Schlüssel „Zusätzliche .ini-Dateien analysiert“.

    – Wesamly

    22. September 2020 um 8:19 Uhr


Typ php --ini um die Konfigurationspfade zu finden.

Ändern memory_limit zu jedem Wert, den Sie benötigen. Stellen Sie sicher, dass Sie es in beiden Dateien ändern: php.ini Und conf.d/php-memory-limits.ini

(In meinem Fall verwende ich -1, um unbegrenzten Speicher zu haben (Natürlich nicht unbegrenzt, aber so viel, wie mein Computer verarbeiten kann))

Ich schlage vor, dass Sie dies oben in Ihrem Skript festlegen:

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

in dem Skript, das so viel Speicher verbraucht, anstatt zuzulassen, dass alle Skripte so viel Speicher verbrauchen. Sie können dies auch in die .htaccess-Datei Ihres /wp-includes/ einfügen.

 php_value memory_limit 512M

Weitere Informationen und Erklärungen hier:
http://www.mydigitallife.info/php-allowed-memory-size-excausted-fatal-error/

  • Es wurde bereits unter /etc/php.ini festgelegt, sodass das Limit hoch genug ist. Ich frage mich nur, warum es im Skript nicht wirksam wird, das Limit jedoch unter einer PHP-Info angezeigt wird

    – Darrell Ding

    3. April 2012 um 20:45 Uhr

  • Weil es von WordPress in der Datei wp-config.php außer Kraft gesetzt werden kann.

    – ArendE

    3. April 2012 um 20:47 Uhr

  • Durch die Nutzung define('WP_MEMORY_LIMIT', '64M'); in dieser Datei zum Beispiel.

    – ArendE

    3. April 2012 um 20:49 Uhr

  • Es ist nicht so, es hat bereits beides ini_set(‘memory_limit’, ‘999M’); define(‘WP_MEMORY_LIMIT’, ‘999M’); definiert in wp-config.php

    – Darrell Ding

    3. April 2012 um 20:52

  • Nun, es ist ganz einfach, irgendwo gibt es immer noch eine Grenze. Dies könnte von Ihrem Webhost, in einer Datei, .htaccess usw. festgelegt werden. Ich schlage vor, dass Sie versuchen, alle Optionen zu verwenden, um das Memory_Limit zu überschreiben, ohne zu fragen, warum es nicht so funktioniert, wie Sie es möchten oder sollten. Schauen Sie sich auch die gleiche Frage hier an: stackoverflow.com/questions/3903363/… vielleicht könnte sie von Nutzen sein 🙂

    – ArendE

    3. April 2012 um 21:02 Uhr


Erstellen Sie eine PHP-Datei namens test.php und fügen Sie Folgendes ein:

<?php
phpinfo();
?>

Prüfen Auf “Pfad der Konfigurationsdatei (php.ini).” Und “Geladene Konfigurationsdatei” um den korrekten php.ini-Pfad anzuzeigen. Bearbeiten php.ini und suchen speicher_limit und setze es auf:

memory_limit = 999M

Überprüfen Sie, ob in der php.ini-Datei mehr als ein Vorkommen von „memory_limit“ vorhanden ist. In diesem Fall löschen Sie es.

Stoppen Sie Apache und starten Sie ihn dann neu (Apachectl restart | Apachectl Graceful | Kill -1 sind nicht in Ordnung. Stoppen, dann starten).

Überprüfen Sie test.php erneut, um zu sehen, ob der neue Parameter erfasst wurde.

Sie können versuchen, dies oben in Ihre Datei einzufügen

ini_set('memory_limit', '999M')

Wie viel Systemspeicher steht Ihnen zur Verfügung? Haben Sie Apache neu gestartet, nachdem Sie Ihre php.ini-Datei bearbeitet haben (ich gehe davon aus, dass Sie PHP als Modul installiert haben)?

Versuchen:

sudo /etc/init.d/httpd restart

  • Ich habe bereits versucht, aus irgendeinem vagen Grund immer noch das Maximum bei 256 zu erreichen

    – Darrell Ding

    3. April 2012 um 20:44

  • Hast du Apache neu gestartet? Der Code in Ihrer php.ini war ebenfalls ungültig … Sind Sie sicher, dass Ihre php.ini keine zweite Einstellung enthält, die Ihre benutzerdefinierte Zeile überschreibt? Überprüfen Sie auch das…

    – Matthew Blancarte

    3. April 2012 um 20:47 Uhr

  • In PHPInfo wird ein Speicherlimit von 999 MB angezeigt, das ist also im Moment nicht das Problem. Ich frage mich nur, warum es in WordPress nicht funktioniert. Die wp-config von WordPress ist ebenfalls auf die Verwendung von bis zu 999 eingestellt

    – Darrell Ding

    3. April 2012 um 20:54

  • Hast du… Apache neu gestartet?

    – Matthew Blancarte

    3. April 2012 um 20:59

  • Wer verwaltet Ihren Server? Wie viel Speicher ist derzeit verfügbar, wenn Sie „free -m“ über die Befehlszeile ausführen?

    – Matthew Blancarte

    3. April 2012 um 21:01 Uhr

Benutzeravatar von craniumonempty
Schädelleer

Ich bin mir nicht sicher, aber in der Google-Suche ist für mich Folgendes aufgetaucht:

http://wordpress.org/support/topic/plugin-cbnet-ping-optimizer-lots-of-errors-on-ping-optimizer-_help-please

Der Ping-Optimierer hat die Datenbank mit einer Tabelle vollgestopft und das Löschen hat das Problem gelöst. Der Fehler war fast derselbe:

Schwerwiegender Fehler: Die zulässige Speichergröße von 268435456 Bytes ist in /home/user1/public_html/domain/wp-includes/wp-db.php in Zeile 1400 erschöpft (versucht, 80 Bytes zuzuweisen).

Schauen Sie also nach, ob ein Plugin das Gleiche tut, löschen Sie es und protokollieren Sie es irgendwo bei WP, damit es behoben werden kann, wenn das das Problem ist.

  • Ich habe bereits versucht, aus irgendeinem vagen Grund immer noch das Maximum bei 256 zu erreichen

    – Darrell Ding

    3. April 2012 um 20:44

  • Hast du Apache neu gestartet? Der Code in Ihrer php.ini war ebenfalls ungültig … Sind Sie sicher, dass Ihre php.ini keine zweite Einstellung enthält, die Ihre benutzerdefinierte Zeile überschreibt? Überprüfen Sie auch das…

    – Matthew Blancarte

    3. April 2012 um 20:47 Uhr

  • In PHPInfo wird ein Speicherlimit von 999 MB angezeigt, das ist also im Moment nicht das Problem. Ich frage mich nur, warum es in WordPress nicht funktioniert. Die wp-config von WordPress ist ebenfalls auf die Verwendung von bis zu 999 eingestellt

    – Darrell Ding

    3. April 2012 um 20:54

  • Hast du… Apache neu gestartet?

    – Matthew Blancarte

    3. April 2012 um 20:59

  • Wer verwaltet Ihren Server? Wie viel Speicher ist derzeit verfügbar, wenn Sie „free -m“ über die Befehlszeile ausführen?

    – Matthew Blancarte

    3. April 2012 um 21:01 Uhr

Benutzeravatar von Benjamin Piette
Benjamin Piette

Stellen Sie sicher, dass Ihr Server/virtueller Server in Apache nicht so konfiguriert ist, dass er die PHP-Konfiguration überschreibt. Auch wenn Sie Folgendes verwenden:

php_value memory_limit 512M

Ihr Server verfügt möglicherweise über Folgendes:

php_value memory_limit 32M

Dadurch werden Ihre Änderungen in php.ini unbrauchbar. Um dies zu beheben:

  • Bearbeiten Sie entweder den php_value-Wert in Ihrer Serverkonfiguration.
  • Oder entfernen Sie es von Ihrem Webserver, damit es die globalen PHP-Einstellungen verwendet.

1451060cookie-checkDas PHP-Speicherlimit wird in normalen PHP-Skripten nicht wirksam

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy