This is mostly a reference post in case I ever have to go through this again. If it helps you too - well I've been there, I feel your pain, hopefully your pain doesn't last as long and you find some answers here.
- PHP memory_limit (mod_fcgid: stderr: PHP Fatal error: Allowed memory size of X bytes exhausted in framework/core/Config.php on line 592) - this is probably caused by the cache. In either /tmp or the public_html for the site there will be a cache folder called silverstripe-cache. Just clear it with
find silverstripe-cache -type f -delete
- Webmin PHP version changes don't take effect (ie. you select one version but it's still loading the wrong one). Just go to
Website Optionsand change it site to use cgi, then change it back to fcgi and it should work.
- Webmin PHP can't be changed to fcgi for a site - this can seemingly be resolved by adding the SuExec to the Apache configuration. grep the user from
example:x:730:584::/home/example:/bin/bash, take the 730:584 and add
SuexecUserGroup "#730" "#584"under the
<VirtualHost>- make sure you do this for both port 80 and port 443 if both are defined. Restart Apache (not sure if this is necessary) and Webmin should let you use fcgi after that.
- Fatal error: 'continue' operator with non-constant operand is no longer supported - the server you restored it from was probably running PHP 5.3 (what year is it?) and you're now on PHP 5.4. If 5.3 isn't an option, just find the line it's complaining about, and see if it needs a semicolon at the end.
- Webmin PHP files are being downloaded instead of executed after a restore - I found the only way to fix this is to add the SuExec per above, and change the
<directory /home/blah/public_html>stanza to:
<Directory /home/blah/public_html> Options -Indexes +IncludesNOEXEC +SymLinksIfOwnerMatch +ExecCGI allow from all AllowOverride All Options=ExecCGI,Includes,IncludesNOEXEC,Indexes,MultiViews,SymLinksIfOwnerMatch Require all granted AddType application/x-httpd-php .php AddHandler fcgid-script .php AddHandler fcgid-script .php5 AddHandler fcgid-script .php5.5 AddHandler fcgid-script .php5.6 AddHandler fcgid-script .php7.0 AddHandler fcgid-script .php7.2 FCGIWrapper /home/blah/fcgi-bin/php5.fcgi .php FCGIWrapper /home/blah/fcgi-bin/php5.fcgi .php5 FCGIWrapper /home/blah/fcgi-bin/php5.5.fcgi .php5.5 FCGIWrapper /home/blah/fcgi-bin/php5.6.fcgi .php5.6 FCGIWrapper /home/blah/fcgi-bin/php7.0.fcgi .php7.0 FCGIWrapper /home/blah/fcgi-bin/php7.2.fcgi .php7.2 </Directory>
Important - the above FCGIWrappers should match those inside /home/blah/fcgi-bin, so if 5.4 exists but nothing higher does, change the 5.5 line to 5.4, and delete the 5.6, 7.0 and 7.2 lines. The AddHandlers don't seem to cause any problems.
Next add the following right before
RemoveHandler .php RemoveHandler .php5 RemoveHandler .php5.5 RemoveHandler .php5.6 RemoveHandler .php7.0 RemoveHandler .php7.2 php_admin_value engine Off
Restart Apache, and fingers crossed the site at least gives an error instead of just downloading PHP.
- A directory says Sorry, there was a problem with handling your request. with no errors in the log - there's a warning in the log isn't there about the timezone. Fix that and it will go away. Add
date_default_timezone_set('Europe/London');to the bottom of
framework/_config.phpand it should start working (other timezones are available). If it doesn't, add
Director::set_environment_type("dev");to the end of that file instead and refresh.
- Connection reset by peer: mod_fcgid: error reading data from FastCGI server - try the advice above for rewriting the PHP config and deleting the cache. If that doesn't work, cd into
chattr -i *; rm -f *, then
cp -a /home/blah/etc/ /home/blah/etc-backup/; find /home/blah/etc/ -type f -delete, go into webmin and switch PHP to cgi and then back to fcgi.