The Apache Error 'Failed to read FastCGI header' does not mean there is a problem with Apache. This error can be triggered when there is an issue with the server.
Here at Ibmi Media, as part of our Server Management Services, we regularly help our Customers to perform related Apache queries.
We come across the error "Failed to read FastCGI header" in the app's Apache error log file at log/APPNAME/APPNAME_apache.error.log.
There are three most likely causes to it:
Generally, when this error occurs, the response sent to the browser is "503 Service Unavailable".
The error message means that when Apache was communicating with PHP-FPM, the PHP process did not respond properly.
1. Diagnose Buggy PHP Code
Since the most common cause can be a buggy PHP code in the app, we need to diagnose it.
The best solution is to disable all WordPress plugins, custom themes, and other custom code until we identify which code causes the problem.
We can find more information in the app's PHP error log or PHP slow log at:
/srv/users/SYSUSER/log/APPNAME/APPNAME_phpX.Y.error.log
/srv/users/SYSUSER/log/APPNAME/APPNAME_phpX.Y.slow.log
Here, "X.Y" is the version of PHP the app uses.
For example, "5.6".
Any errors in these files, likely mean we have a bug in the app's PHP code, such as in a WordPress plugin.
Suppose, we have slow scripts. This can cause a cascade of problems which ultimately results in PHP not able to respond to requests anymore.
In this case, the solution is to fix the slow PHP code.
2. Diagnose Buggy PHP Extensions
On the other hand, if we add custom PHP extensions, such as New Relic or any PECL extension, one of them can be buggy.
We need to find and fix it.
3. Out of Memory
The PHP process handling the request is likely to crash if the server runs out of memory while handling a PHP request.
Likewise, we may come across the error in the server's /var/log/syslog file:
Out of memory: Kill process ... (php-fpm)
This can be due to a memory outage. The best solution here is to upgrade the server to one with more memory.
In addition, we can reduce PHP and WordPress memory usage.
4. Restart PHP
After all, if we fail to identify the cause of the problem, we can get the app working again by restarting PHP.
To restart PHP, we SSH into the server as root and run the following command as root for the app's PHP version:
$ sudo service phpX.Y-fpm-sp restart
Make note that not identifying the cause can also result in it happening again.
This article covers methods to resolve Apache Error 'Failed to read FastCGI header'. When this error occurs, the response sent to the browser will be "503 Service Unavailable". Basically, the error message "Failed to read FastCGI header" indicates that when Apache was communicating with PHP-FPM, the PHP process did not respond properly.