I’m facing an issue when I try to migrate a Joomla installation to a different server. Let me first of all say I have copied all files from the old server to the new one, and migrated the Joomla database to a different server.
I’ve updated configuration.php to reflect the changes in the MySQL server.
When loading the site, it apparently works fine: connects to DB and allows all operations. However, when trying to access to the Joomla administration panel, and after successful login, an empty screen appears. There is no possible way to enter the backend.
I’ve configured the configuration.php file to enable error reporting:
public $error_reporting = 'maximum';
public $debug = 1;
Also, I’ve introduced the next line in the administrator/index.php file:
Despite of all this, no error appears in the Apache2 log (/var/log/apache2/error.log) nor in the Joomla logs (/var/www/logs/error.php).
I’ve tried disabling manually in the database some extensions, and actually came up with the fact that disabling the extension ‘Jomsocial Update’ allows to enter the backend, although the Jomsocial administration site cannot be accessed (a blank page appears once again).
For me, the weird thing is the fact of not getting any error at all in the logs.
Both the old and the new server have the same Apache version (2.2.22). However, the old server has PHP v5.4.6 whereas the new server has PHP v5.3.10. I’ve also tried installing PHP v5.4.28 from a non-official repository, but it also failed.
Do you know what may be happening? Thanks a lot for your support.
After working on this the whole day, I finally came up with the solution. It’s just that php5-curl was not installed. As simple and stupid as it sounds.
So what was happening most likely is that Jomsocial / Jomsocial Update plugin required curl to display their administration sites. I guess Jomsocial Update was executed everytime the admin went into the administrator panel, and that’s why disabling it prevented from blank screen of death (whereas the Jomsocial admin site was not accessible anyway).
Still, I’m confused about the way of coming up with the solution: this happened to me in other scenarios, but you usually find the solution because logs are quite explicit in printing out that curl_init() is not defined. How messed up can this be so that absolutely nothing was recorded in the logs?
Well, actually pretty messed up. While writing these words, I had a feeling of what could be happening. Yes, curl_init() calls are preceded by the ‘@’ operator, which silences out errors even when E_ALL logging is defined. I don’t know whether this is common coding style but for what it respects to debugging, it just turns it all into a hell.
Anyway, that’s the answer for anyone who may have the same problem.