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 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.

Share This Page