it-swarm.com.de

Nginx oder PHP FPM ignoriert memory_limit in php.ini

Serverinfo: Ubuntu Server, Nginx, PHP FPM

in /etc/php5/fpm/php.ini Ich habe: memory_limit = 512Min /etc/php5/fpm/php-fpm.conf Ich habe: php_admin_value[memory_limit] = 512M

php_value[memory_limit] = 512M

Meine phpinfo sieht so aus:

PHP Version 5.3.10-1ubuntu3.6

Erstellungsdatum des Systems

Linux snserver 3.2.0-40-generic # 64-Ubuntu SMP Mo Mrz 25 21:22:10 UTC 2013 x86_64 11. März 2013 14:34:24 

Server-API

FPM/FastCGI

Unterstützung für virtuelle Verzeichnisse

deaktiviert

Konfigurationsdatei (php.ini) Pfad

/etc/php5/fpm 

Geladene Konfigurationsdatei

/etc/php5/fpm/php.ini

Scannen Sie dieses Verzeichnis nach weiteren INI-Dateien /etc/php5/fpm/conf.d 

Zusätzliche .ini-Dateien analysiert

/etc/php5/fpm/conf.d/curl.ini, /etc/php5/fpm/conf.d/Gd.ini, /etc/php5/fpm/conf.d/mcrypt.ini, /etc/php5/fpm/conf.d/memcache.ini, /etc/php5/fpm/conf.d/mysql.ini, /etc/php5/fpm/conf.d/mysqli.ini, /etc/php5/fpm/conf.d/pdo.ini, /etc/php5/fpm/conf.d/pdo_mysql.ini...

Dieser Server ist mit dem Suhosin Patch 0.9.10 .__ geschützt. Copyright (c) 2006-2007 Hardened-PHP Project Copyright (c) 2007-2009 SektionEins GmbH

Dieses Programm verwendet die Zend Scripting Language Engine: Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies mit Xdebug v2.2.2, Copyright (c) 2002-2013, von Derick Rethans

... 

memory_limit

128M

upload_max_filesize

20M

in /etc/nginx/nginx.conf:

    user www-data;

worker_processes 2;

pid /var/run/nginx.pid;

events {
    worker_connections 768;
    # multi_accept on;
}

http {
    client_max_body_size 20M;

    ##

    # Basic Settings

    ##
    fastcgi_buffers 16 16k;

    fastcgi_buffer_size 32k;

    proxy_buffers 4 512k;

    proxy_buffer_size 256k;

    proxy_busy_buffers_size 512k;

    fastcgi_read_timeout 3600;

    sendfile on;

    tcp_nopush on;

    tcp_nodelay on;

    keepalive_timeout 300;

    keepalive_requests 50;

    #ssl_ciphers HIGH:!aNULL:!MD5:!kEDH;

        #ssl_prefer_server_ciphers on;

        #ssl_protocols TLSv1;

        #ssl_session_cache shared:SSL:10m;

        #ssl_session_timeout 10m;

    types_hash_max_size 2048;

    # server_tokens off;

    # server_names_hash_bucket_size 64;

    # server_name_in_redirect off;

    include /etc/nginx/mime.types;

    default_type application/octet-stream;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;

    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # nginx-naxsi config
    ##
    # Uncomment it if you installed nginx-naxsi
    ##

    #include /etc/nginx/naxsi_core.rules;

    ##
    # nginx-passenger config
    ##
    # Uncomment it if you installed nginx-passenger
    ##

    #passenger_root /usr;
    #passenger_Ruby /usr/bin/Ruby;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

Das Problem ist, wenn ich upload_max_filesize Größe ändere, dann zeigt die phpinfo den neuen Wert an, aber wenn ich memory_limit ändere, ändert sich nichts. Ich denke, irgendwo wird das memory_limit überschrieben. Aber ich kann es nicht finden. Kann mir jemand helfen?

10
user2272788

Sie können Nginx aus dem Bild nehmen, es leitet die Anforderung einfach weiter, es läuft in PHP-Fpm und führt Ihren PHP-Code aus.

sie können Ihre Suhosin-Einstellungen überprüfen, suhosin.memory_limit. 

wenn Sie Ihre phpinfo-Ausgabe sehen, sollte es für memory_limit 2 Spalten (master und local) geben. Was zeigen diese jeweils? 

128M ist die Standardeinstellung für memory_limit in php 5.3

7
troseman

In /etc/php5/fpm/php-fpm.conf habe ich php_admin_value[memory_limit] = 512M

Das funktioniert für mich.

20
temple

Das Problem kann in fpm der Prozessverdopplung liegen, selbst wenn Sie Ihre /etc/php5/fpm/php.ini ändern, war dies nicht der Fall. 

  • Stoppen Sie php5-fpm mit (ubuntu): Sudo-Dienst php5-fpm stop
  • Überprüfen Sie, dass keine fpm mehr verarbeitet: Sudo ps axe grep fpm
  • wenn irgendjemand tötet alles mit: Sudo kill -9 pid
  • stellen Sie sicher, dass Sie alle Fpm-Prozesse beenden
  • neustart: Sudo-Dienst php5-fpm neu starten
9
pilot

Nur zur Info,

sie sollten auch in/etc/php5/fpm / pool.d nach Dateien suchen.

Es ist mir einfach passiert, dass egal was ich auf /etc/php5/fpm/php-fpm.conf schrieb, es von /etc/php5/fpm/pool.d/www.conf überschrieben würde!

Wenn also keine der obigen Antworten für Sie funktioniert, sollten Sie dies überprüfen (ich habe nur eine halbe Stunde verloren).

4
Edu Wass

Bei mir wurde auch die php.ini ignoriert und ich musste Folgendes tun:

vim /etc/php-fpm.d/www.conf

php_admin_value[memory_limit] = 10000M ;128M

Dann starte php-fpm neu:

service php-fpm restart
2
Anthony Vipond

Dies traf auch jetzt zu und wollte den Speicher unseres Servers in einem DigitalOcean-Droplet erhöhen

Zusammenfassend habe ich Folgendes getan 

Sudo nano /etc/php5/fpm/php-fpm.conf

-- press Ctrl-W to do a search in nano text editor
-- if php_admin_value[memory_limit] is there, change it
php_admin_value[memory_limit] = 512M

Sudo service php5-fpm restart

Sie müssen nginx nicht neu starten, es reicht aus, nur php neu zu starten.

1
fedmich

Ok, das ist dumm, aber ich hatte memory_limit auf 2 GB gesetzt, was nicht verstanden wird. Als ich das auf 2000M änderte, funktionierte es!

0
Jim Moo