donatas abraitis

Overwrite PHP settings on the fly with mod_reset

mod_reset is a module for both Apache versions including 2.2 and 2.4. It simply looks at headers you set in Apache configuration and overwrites PHP settings. Let’s say we want to set memory_limit dynamically for certain application, Apache configuration looks like this:

ResetHeaders "memory_limit" "X-Memory-Limit"

This snippet translates to Look at X-Memory-Limit HTTP header and set value from this header to PHP memory_limit. You might wonder why use this module while there are other solutions like mod_fcgid, mod_lsapi? Because we want to use mod_php, run single PHP version per container and have a reverse proxy in front of this fleet of containers. Secondly, mod_fcgid is not developed anymore, while mod_lsapi has to run under CloudLinux which is proprietary and not free.

In addition, this module allows you to overwrite DocumentRoot, ServerAdmin and TMPDIR environment on request from headers too. For instance:

ResetHeader "ServerAdmin" "X-Server-Admin"
ResetHeader "DocumentRoot" "X-Document-Root"

Setting TMPDIR environment per request allows you to make sure client is not using /tmp anymore for temporary files, thus files quota will be calculated more granularly.

If you became interested in mod_reset, grab it from Github and try.