ISPconfig Nginx - php5-fpm requires manual restart to "take" values.

Discussion in 'General' started by talkingnews, Dec 3, 2011.

  1. talkingnews

    talkingnews New Member

    Ubunutu 11.10
    Niginx 1.0.10
    php5-fpm 5.3.8

    Everything's been working perfectly for days, but I need to make a config change to the php.ini. Specifically, I need to work out why a login page is doing an endless redirect loop in nginx, where it worked fine in Apache (.htaccess is not relevant here).

    Here's what I put in the php.ini config section in ISPC:

    date.timezone = "UTC"
    error_reporting = "E_ALL";
    display_errors = On
    display_startup_errors = Off
    [COLOR="Red"]log_errors = On[/COLOR]
    ignore_repeated_errors = Off
    ignore_repeated_source = Off
    error_log = error_log
    post_max_size = 28M
    session.gc_maxlifetime = 604800
    upload_max_filesize = 28M
    and here's what appears in the php5 pool.d/web1.conf file:

    php_admin_value[date.timezone] = "UTC"
    php_admin_value[error_reporting] = "E_ALL"\;
    php_admin_flag[display_errors] = off
    php_admin_flag[display_startup_errors] = off
    [COLOR="red"]php_admin_flag[log_errors] = off[/COLOR]
    php_admin_flag[ignore_repeated_errors] = off
    php_admin_flag[ignore_repeated_source] = off
    php_admin_value[error_log] = error_log
    php_admin_value[post_max_size] = 28M
    php_admin_value[session.gc_maxlifetime] = 604800
    php_admin_value[upload_max_filesize] = 28M
    Notice how the "on" has become "off" and the case changed?

    But more than that, it doesn't restart php5-fpm, so those values don't "take".
    By going into a shell and issuing "service php5-fpm restart", then it works.

    If I manually make than change in the file, then it WILL stick, but then of course it's out of synch with ISPC control panel, so as soon as I make another change, it gets overwritten. Phew!

    But I also noticed when I restart php5-fpm after making a change, or leaving it for a few minutes, that it takes about 30 seconds to restart. But when I do it straight after the restart, it's instant. I watched free and top in another window, and it wasn't running out of memory.

    In case it matters, following multiple articles about managing fpm on vps with limited memory, I made the following changes in ISPC which look like this in the log:

    pm = dynamic
    pm.max_children = 4
    pm.start_servers = 1
    pm.min_spare_servers = 1
    pm.max_spare_servers = 2
    This is actually perfectly adequate for my needs, and greatly reduced the fpm footprint - I only have 2 sites anyway.

    And finally.... phpinfo says the error log is in /usr/error_log - seeing as I've got reporting turned to "all", and when I put it to display errors I get loads, I'm surprised to see the error log doesn't even exist.
  2. falko

    falko Super Moderator Howtoforge Staff Moderator HowtoForge Supporter ISPConfig Developer

  3. bkraul

    bkraul New Member

    php flags.

    I know it has been a while, but I have had this same issue with flags being turned off even though I specify them as on. I did a lot of checking and testing, and it seems it has to do with the way the ISPConfig parser takes in the "php.ini" value and converts it into a php_admin_value[var] = value.

    It seems that if it has no double quotes (if it is not text), and it is not a number, it assumes it is a boolean value and must evaluate in a specific way. In terms of boolean interpretation, it is my guess that "on/off" means nothing to the parser, therefore it will always evaluate as false, which means "Off".

    I finally figured out that if you enter the value on the "Custom php.ini directives" as for example:

    display_errors = true
    The parser will then write the conf file as:

    php_admin_value[display_errors] = true
    which will translate as "On" for all purposes and the change will take place. I hope this can still help someone.
: fpm, nginx, php-fpm

Share This Page