The main question was solved by the accepted answer, but no one has answered why prefork does work and worker/event do not.
Apache has three types of multi-processing modules (MPM) to handle incoming requests: prefork (legacy, <2.4), worker (newer, >=2.4) and event (newest, >=2.4).
- Prefork implements a non-threaded, pre-forking web server
- Worker implements a hybrid multi-threaded multi-process web server
- Event is a variant of worker implementation consuming threads only for connections with active processing
Most Linux distributions configure prefork module by default. The reason is stability and compatibility. And also, because some legacy modules like mod_php only works under a process-per-request model.
If you need mod_php in your Apache instance, then you cannot benefit from using a threaded multi-processing model (worker or event).
You can find some performance tests between prefork, worker and event modules doing a quick search, getting better performance both worker and event modules versus prefork module.
In order to get PHP under a threaded multi-processing model (worker or event) and serve pages quicker than just using mod_php module (with only-compatible prefork model), you must migrate your actual configuration from mod_php module to php-fpm service + mod_fcgid module + mpm_event.
An answer with a detailed step-by-step guide to configure php-fpm service + mod_fcgid module + mpm_event module exceeds the purpose of the question IMHO, but it is well documented in the recommended readings.
Finally, I would like to mention why mod_php will never support a threaded multi-processing model:
Why shouldn't I use Apache2 with a threaded MPM in a production environment?
PHP is glue. It is the glue used to build cool web applications by sticking dozens of 3rd-party libraries together and making it all appear as one coherent entity through an intuitive and easy to learn language interface. The flexibility and power of PHP relies on the stability and robustness of the underlying platform. It needs a working OS, a working web server and working 3rd-party libraries to glue together. When any of these stop working PHP needs ways to identify the problems and fix them quickly. When you make the underlying framework more complex by not having completely separate execution threads, completely separate memory segments and a strong sandbox for each request to play in, further weaknesses are introduced into PHP's system.
If you want to use a threaded MPM, look at a FastCGI configuration where PHP is running in its own memory space.
Extracted from: https://www.php.net/manual/en/faq.installation.php#faq.installation.apache2
Recommended readings: