12

I have a Drupal installation that previously worked perfectly on my localhost. However, now, after a formatted my computer, it just shows a blank screen (completely white).

So my question is, how can I see where things are going wrong, if I can't even log into the sever?

The only errors I can find are (taken from the Apache Error Logs):

[Tue May 17 05:05:04 2011] [notice] Parent: child process exited with status 255 -- Restarting.
[Tue May 17 05:05:04 2011] [notice] Digest: generating secret for digest authentication ...
[Tue May 17 05:05:04 2011] [notice] Digest: done
[Tue May 17 05:05:07 2011] [notice] Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9 configured -- resuming normal operations
[Tue May 17 05:05:07 2011] [notice] Server built: Dec 10 2008 00:10:06
[Tue May 17 05:05:07 2011] [notice] Parent: Created child process 6992

There are no errors in Watchdog...

I am using Xamp 1.7.1 (PHP 5.2) and Drupal 6.

I just also need to mention that once I try and load the site on my local machine, apache also crashes! I added this:

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

And it still just shows the screen of death? Where can I actually see errors?

I also found this in apache access.log:

127.0.0.1 - - [17/May/2011:05:22:14 +0200] "GET /greekmerchant/src/ HTTP/1.1" 200 3
127.0.0.1 - - [17/May/2011:05:25:45 +0200] "GET /greekmerchant/src/update.php HTTP/1.1" 302 -
127.0.0.1 - - [17/May/2011:05:25:46 +0200] "GET /greekmerchant/src/update.php?op=info HTTP/1.1" 200 -

... after trying to access update.php. It also just goes to a white screen.

I have this in my sql config file:

[mysqld]
port= 3306
socket= "C:/xampp/mysql/mysql.sock"
basedir="C:/xampp/mysql" 
tmpdir="C:/xampp/tmp" 
datadir="C:/xampp/mysql/data"
skip-locking
key_buffer = 16M
max_allowed_packet = 128M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log_error="mysql_error.log"

And...

[mysqldump]
quick
max_allowed_packet = 128M

Also, my PHP memory is set to 1024MB.

Anyone got any idea why this is just dying? Is it really a memory problem? What else can I do to get errors shown to me? I still see nothing even after enabling error logging.

Update:

The website runs on my local machine if I delete the files folder. So, for some reason, when it has to access files in the files folder, it runs out of memory. Why? Or better yet, what could be causing this excessive use of memory?

hakre
  • 193,403
  • 52
  • 435
  • 836
rockstardev
  • 13,479
  • 39
  • 164
  • 296
  • How many modules do you have installed (approximately)? Try emptying the cache tables thru pphpMyAdmin. After that retry to access the page. If apache crashes, try it again for about 5 to 6 times. I had a similar problem too on a server with low memory. Drupal was able te rebuild the cache over severall requests. Btw does apache crash immediately or does it take severall seconds? Translation-files may live under files and could cause memory problems on creation if you have lots of modules and activated languages. Imagecache can cause problems too while creating thumbnails. – marsbear May 29 '11 at 01:02

9 Answers9

14

There is a whole page in the Drupal handbooks dedicated to debugging the "White Screen of Death". In a nutshell, enable error reporting by adding the following at the top of your index.php file:

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

...and check the logs, which you've already started to do. Those two steps tend to pinpoint the problem, most of the time. If that doesn't point you towards a solution, continue down the handbook page, for lots more tips.

If I had to take a wild guess, I would say your case is probably an out-of-memory error.

Matt V.
  • 9,703
  • 10
  • 35
  • 56
  • I agree that it is out of memory. So how do you fix that? I have 4 gigs of RAM... how do I boost my local machine to utilise this? – rockstardev May 17 '11 at 03:31
  • 2
    You can increase your memory limit as explained here: http://drupal.org/node/31819 – Matt V. May 17 '11 at 04:07
  • Try Wolf Fence in Alaska: place a `print "Hi, Mom!"` at some place in the code. Refresh. Do you get it? If not, place it earlier in execution. If you do get it, place it later. Lather, rinse, repeat. You can fairly quickly narrow it down to a one or two lines of code. – Peter Rowell May 17 '11 at 04:28
  • I did that with update.php ,and it goes all the way to: print theme('update_page', $output, !$progress_page); --> but that displays nothing? I even disabled all themes! – rockstardev May 17 '11 at 04:35
  • I do not think there is any use in enabling `display_startup_errors` inside PHP code. That setting - even enabled then - would be set too late. Those errors already occured. – hakre Sep 24 '12 at 10:32
  • Brilliant Wild guess @Matt V ! saved me today ! Usually php throws the out of memory exception, but in our case drupal 7 on Acquia cloud just a white screen of death .... Thanks. – Aukhan Apr 25 '13 at 04:16
4

I know this may be late, but it helped me. Most times a module causes WSOD, I couldn't just disable modules to test which it was, since I may have lost data in the process. What I did was to edit this function in module.inc

function module_invoke_all($hook) {
  $args = func_get_args();
  // Remove $hook from the arguments.
  unset($args[0]);
  $return = array();
  foreach (module_implements($hook) as $module) {

        print "Starting loading $module <br />";

        $function = $module . '_' . $hook;
        if (function_exists($function)) {
          $result = call_user_func_array($function, $args);
          if (isset($result) && is_array($result)) {
            $return = array_merge_recursive($return, $result);
          }
          elseif (isset($result)) {
            $return[] = $result;
          }
        }

        print "Finished loading $module <br />";

  }

  return $return;
}

And I added those 2 print statements in the code above, then refresh the page, the module which didn't reach the "Finish loading $module" statement is the one with the problem... it was devel in my case.

After finding the module, you can go into the system table and look for that module, set it's status = 0 and bootstrap = 0 or run the query:

UPDATE system SET status = 0, bootstrap = 0 WHERE name = 'module_name' LIMIT 1

Reference: Debugging Drupal White Screen of Death (WSOD)

Joshua Kissoon
  • 3,269
  • 6
  • 32
  • 58
1

In my php.ini I modified these variables:

error_reporting = E_ALL & ~E_DEPRECATED
display_errors = On 
display_startup_errors = On

Executed:

sudo apachectl restart

An get rid of these errors in all my Drupal sites.

Freeman
  • 5,810
  • 3
  • 47
  • 48
1

Check your error reporting settings for PHP. You may need to enable error reporting.

This may help: http://drupal.org/node/158043

Mike
  • 126
  • 5
1

Content of theme('page') rendering is empty, and that would sure enough give you a WOD.

Use this to help you, it finds a couple of common issues related to WOD.

Also try rebuilding permissions, best way is to use drush and type:

drush php-eval 'node_access_rebuild();'

Also use drush to view currently installed modules, with

drush sm

disable ALL custom modules, and search.

drush disable <modulename>

And while you are in drush, clear the cache:

drush cc

If you figure cron is the problem , I've had huge problems with badly written cron hooks before, just in case it is your issue, supercron will be your friend for this.

You should have enough memory unless you have some module in there behaving very badly.

* Troubleshooting update

If the problem occurs while running update.php open update.php in a text editor and uncomment the following line:

ini_set('display_errors', FALSE);

See this page for a bunch of other wsod fixes. Notably if you use path-auto, the fix mentionned on that page is worth a look into.

Stephane Gosselin
  • 9,030
  • 5
  • 42
  • 65
1

My advice is to take the entire contents of your module and theme folder and download them to your desktop. These themes and modules are still installed just temporarily disabled. If your site comes back then it was most likely a module or theme error. Maybe someone missed a ending bracket '}'. If you are certain that the modules or themes are not the problem then place them back in the folder with no loss what so ever. It does not hurt to try this since you won't lose anything. If you find out it is a module problem start placing them one by one back in the folder refreshing along the way. Once the site white screens you found your problem and an update to a module might help.

I always try this first since the drupal install is pretty rock solid it is the modules and themes that you have to worry about.

Unlike the other answers here this wont exactly pin point the problem but if you are lazy like me and don't want to modify config files and turn on errors then this is the way to go, or at least start here then go and modify the configs when all else fails.

1

Assuming it is a Linux host, it could be a permissions issue if your host is running suPHP or some other form of suexec. Make sure that the ownership of the files is correct and the access mode is correct.

You may also have an invalid .htaccess file, try to remove it just to test for this.

Geoffrey
  • 10,843
  • 3
  • 33
  • 46
0

Had a WSOD that just wouldn't tell me what was wrong. No errors showed up after enabling display_errors/display_startup_errors/error_reporting. There was nothing in the PHP error log. There was nothing in the server error log. Just a WSOD and go figure.

The way I finally managed to coax Drupal into displaying error messages was to enable $update_free_access = FALSE; and navigate to /update.php. This showed that there were no pending updates, but listed a whole bunch of errors in the database, which were the result of a messed up data import.

enter image description here

Roman Starkov
  • 59,298
  • 38
  • 251
  • 324
0

Check the contents of the directory of your theme (directory or file).

In the marinelli theme the absence of folder logic causes this kind of problem.

jwpfox
  • 5,124
  • 11
  • 45
  • 42
karim-225
  • 1
  • 1