Das PHP-Speicherlimit wird in normalen PHP-Skripten nicht wirksam
Lesezeit: 6 Minuten
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.
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
Schädelleer
Ich bin mir nicht sicher, aber in der Google-Suche ist für mich Folgendes aufgetaucht:
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
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.
14510600cookie-checkDas PHP-Speicherlimit wird in normalen PHP-Skripten nicht wirksamyes
Du hast das Richtige bearbeitet
php.ini
? (Sehenphpinfo()
oderphp -i
(Beachten Sie, dass die verschiedenen Sapis (Apache-Modul,cgi
,cli
…) anders verwendenphp.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 esmemory_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