Hosting Panel Login Page Shows Blank White Screen

Server & Cloud Intermediate 👁 9 views 📅 Jun 27, 2026

Your hosting control panel login page loads empty. 9 times out of 10 it's a PHP memory limit or a crashed Apache worker. Here's how to fix it fast.

Quick answer for advanced users

SSH in, run service httpd status (or apache2). If it's running, check php -m | grep memory_limit. If it's under 128M, edit /etc/php.ini (or /etc/php/8.x/apache2/php.ini) and raise it to 256M. Then restart Apache. If that doesn't fix it, look at /var/log/httpd/error_log — you'll often see "PHP Fatal error: Allowed memory size exhausted" or "Out of memory".

What's actually happening here

You type your panel's URL — let's say https://server-ip:2083 for cPanel or https://server-ip:8443 for Plesk — and you get a white screen. No error, no login form. The browser just hangs or shows nothing. The reason is almost always one of two things: PHP ran out of memory while generating the login page, or Apache's web server process crashed because it hit a resource limit. I've seen this on CentOS 7 boxes with 1GB RAM running cPanel 98 and on Ubuntu 22.04 with Plesk Obsidian. The panel's login script needs a decent chunk of PHP memory — typically 128MB minimum — and if your server's under load or misconfigured, it just dies silently.

The white screen is PHP's default behavior when it hits a fatal error. It doesn't output anything, so you see nothing. That's why you need to check logs or tweak PHP settings directly. Let's fix it.

Step-by-step fix

1. Check if Apache is running

SSH into your server. Run this first:

service httpd status

If you're on Debian/Ubuntu, it's service apache2 status. If it says "active (running)", move to step 2. If it's dead, start it with service httpd start. If it won't start, run journalctl -u httpd (or apache2) and look for errors. Common issue: Apache can't bind to port 80 because another service (like nginx) already uses it. Kill that service or change ports.

2. Raise PHP memory limit

Most panels run under a separate PHP instance. For cPanel, it uses its own PHP binary at /usr/local/cpanel/3rdparty/bin/php. For Plesk, it's usually /opt/plesk/php/8.x/bin/php. But the config file that matters is the one Apache loads for the panel's virtual host. Run this to find the active PHP config:

php -i | grep "Loaded Configuration File"

You'll see something like /etc/php.ini. Edit that file:

nano /etc/php.ini

Find the line memory_limit = 128M. Change it to 256M. If it's lower (some shared hosting configs set it to 64M or even 32M), raise it to at least 128M. Save the file. Then restart Apache:

service httpd restart

Now try loading the panel login page again. If it works, you're done. If not, move to step 3.

3. Check Apache's event worker limits

Apache's MPM (Multi-Processing Module) settings can kill workers under high load. The default config might allow too many concurrent connections. Edit Apache's config:

nano /etc/httpd/conf/httpd.conf

Look for <IfModule mpm_event_module> or mpm_prefork_module. You'll see settings like:

StartServers 5
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 400

Reduce MaxRequestWorkers to 200 if your server has less than 2GB RAM. Also lower MaxSpareThreads to 50. This prevents Apache from spawning too many children and starving the system of memory. Restart Apache after changes.

4. Check the panel's own error logs

cPanel writes its errors to /usr/local/cpanel/logs/error_log. Plesk logs at /var/log/plesk/panel.log. Tail it while you try to load the page:

tail -f /usr/local/cpanel/logs/error_log

Look for lines containing "PHP Fatal error" or "Out of memory" or "Cannot allocate memory". That confirms the issue. If you see something like "Uncaught Error: Call to undefined function", it might be a missing PHP extension — but that's rare on a fresh panel install.

Alternative fixes if the main steps fail

Alternative 1: Restart the panel service itself

Sometimes Apache is fine but the panel's background daemon crashed. For cPanel:

service cpanel restart

For Plesk:

service psa restart

This reloads the panel's own web interface. Wait 30 seconds and refresh the page.

Alternative 2: Check disk space

If df -h shows the root partition at 100%, nothing can write to logs or temp files. The panel tries to create a session file and fails silently. Free up space by cleaning old logs:

find /var/log -name "*.gz" -delete
apt autoremove # on Debian/Ubuntu
yum clean all # on CentOS/RHEL

Alternative 3: Reinstall the panel's PHP packages

If you've messed with PHP versions or removed something, the panel's PHP binary might be broken. For cPanel:

cd /usr/local/cpanel/scripts/
./update-php --force

For Plesk, run the autoinstaller:

/usr/local/psa/admin/sbin/autoinstaller

Select "Keep current" for all components and let it reinstall.

Prevention tip

Set up a cron job that checks Apache's memory usage every 5 minutes. Add this to your crontab (crontab -e):

*/5 * * * * /usr/bin/free -m | awk 'NR==2{printf "%.0f\n", $3*100/$2}' | xargs -I {} bash -c 'if [ {} -gt 90 ]; then service httpd graceful; fi'

This restarts Apache gracefully when memory usage goes over 90%. It's not perfect but it'll keep your panel login page alive during traffic spikes.

One more thing: never run killall -9 httpd. That forces children to die and leaves shared memory segments orphaned. Use service httpd restart or apachectl graceful instead. Learned that the hard way on a production server.

Was this solution helpful?