Sidan laddas inte om

Events happening in the community are now at Drupal community events on www.drupal.org.
masu0105's picture

Hej!

Har fått ett problem med min Drupal installation. När jag gör någonting som kräver att sidan laddas, t.ex. kör cron, flyttar ett block eller loggar ut kommer det bara fram en tom vit sida, om jag uppdaterar sidan så visas den som den ska. Är det någon som vet vad det kan bero på?

Mvh Markus

Comments

Det är kanske för lite

Azone's picture

Det är kanske för lite information i din beskrivning, så några förslag eller gissningar kommer här.
Men har du många moduler och en server som inte klarar att hantera det minnesmässigt kan man ofta få WSOD (White screen of Death). Inte helt ovanligt när man kör/använder one.com som endast har 32 Mbyte PHP-minne i kombination med för många moduler. Men WSOD brukar ske i andra sammanhang också än de du beskriver. Jag skulle testa att avinstallera några och/eller alla och se om någon modul orsakar det, eller var du når gränsen ifall det är ett minnes problem. En bra början är att avinstallera Admin-menu modulen som kräver mycket och orsakar minnes problem med servrar med lågt minne. På vissa webbhotell kan du öka PHP-minnet genom modifiering av settings.php eller .htaccess-filerna.

Skulle kunna vara att installationen av Drupal själv blivit korrupt, någon fil saknas eller är skadad. Kopiera över din förra installation med ny och se om det går bättre. Se bara till att vissa filer inte skrivs över som du kanske vill spara, tex settings.php (borde inte hända om det är rätt inställt men ändå) och kanske någon av .htaccess-filerna.

Några förslag iaf. Lycka till.

Hej! Tack för tipset! Glömde

masu0105's picture

Hej!

Tack för tipset! Glömde att tala om att jag kör på en lokal apache webbserver och memory limit är 128M. Har nu avinstallerat ganska många moduler och nu fungerar det. Det verkar som att det bara är de moduler som jag själv skapat själv genererar felet :(, har fyra moduler jag skrivit själv och varje gång jag aktiverar någon av dem får jag upp WSOD. Har försökt hitta gemensamma faktorer som mina moduler har som inte de andra modulerna och försökt utesluta de faktorerna. Det här är vad jag kommit på hittils:

Alla egna moduler ligger i mappen custom.
Har försökt flytta modulerna men det blir samma fel
Fel med tecken kodningen
Har satt tecken kodningen till UTF-8 och plockat bort åäö men samma fel

Har slut på idéer nu, tar tacksamt emot flera tips. (Konstigt är ju att WSOD bara visas efter jag gjort nått så att sidan måste uppdateras, det kommer inte upp om jag bara navigerar mellan olika noder)

Vad gör dina moduler?

fabsor's picture

Det låter som om du har gjort något galet i alla dina moduler. Har du skrivit något som kan få hela scriptet att sluta exekvera?

Har du implementerat hook_nodeapi, hook_save eller dylikt och försökt skriva ut något däri kanske? Det får nämligen redirect att inte fungera, php kan ju inte göra en redirect om man outputat nåt på sidan.

Om du inte har varningar och fel påslagna i php så föreslår jag att du sätter på dessa.

Fungerar inget av tipsen ovan föreslår jag att du går igenom dina moduler med en debugger. Både Netbeans och Eclipse fungerar utmärkt tillsammans med php-tillägget xdebug, men netbeans är enklast att s sätta upp. Hur du gör beror på om du kör windows, linux eller OS X, men du bör kunna googla dig fram till en lämplig guide väldigt enkelt.

//Fabian Sörqvist

Ja, jag har använt

masu0105's picture

Ja, jag har använt hook_nodeapi i en av modulerna men inte alla. Har kollat igenom modulerna nu och jag har inga utskrifter i modulerna. Men det kanske är något annat som gör att headers skickas från modulen för om jag t.ex. loggar ut och därefter uppdaterar sidan (eftersom det efter utloggningen kommer up WSOD) få jag upp en varning:

"warning: Cannot modify header information - headers already sent by (output started at C:\xampp\xampp\htdocs\drupal\drupal-6.16\sites\all\modules\custom\saljare\saljare.module:1) in C:\xampp\xampp\htdocs\drupal\drupal-6.16\includes\common.inc on line 148."

Har inte hållit på med webbprogrammering så länge så jag är inte så hemma på vad som kan orsaka att något skickas från sidan. Klipper in koden till en av modulerna som inte fungerar. Skulle uppskatta om det är någon som har tid och lust att kolla igenom den så att det inte finns några uppenbara fel i koden .

<?php
// $Id$

function saljare_menu() {
   $items['saljare'] = array(
   'title' => 'Ny säljare',
    'page callback' => 'saljare_page',
  'access arguments' => array('access saljare content'),
  );
return $items;
}


function saljare_page() {
   if(user_access('access saljare page'))  {
      $output = t('Registrera ny säljare, säljarens position kan anges i fälten geoX och geoY eller väljas på kartan');
    // Return the HTML generated from the $form data structure.
    $output .= drupal_get_form('saljare_nameform');
      $output .= "<br/><br/>";
    
}
  else  {
      $output = t('Access Denied');
  }
  return $output;
}

function saljare_perm() {
  return array(
    'access saljare content',
    'access saljare page'
  );
}


function saljare_nameform() {
    $form['namn'] = array(
   '#title' => t('Namn'),
  '#type' => 'textfield',
'#description' => t('Säljarens namn.'),
);

    $form['anteckning'] = array(
'#title' => t('Anteckning'),
    '#type' => 'textfield',
'#description' => t('Övrig information.'),
  );

    $form['adress'] = array(
'#title' => t('Adress'),
    '#type' => 'textfield',
'#description' => t('Säljarens adress.'),
   );

   
   $form['geoX'] = array(
   '#title' => t('GeoX'),
  '#type' => 'textfield',
'#description' => t('x-koordinat'),
);

    $form['geoY'] = array(
   '#title' => t('GeoY'),
  '#type' => 'textfield',
'#description' => t('y-koordinat'),
);
    
   $form['submit'] = array(
'#type' => 'submit',
    '#value' => t('Registrera')
);

   return $form;
}


function saljare_nameform_validate($form, &$form_state) {
    if ($form_state['values']['namn'] == '') {
       // We notify the form API that this field has failed validation.
       form_set_error('namn',
       t('Empty field!'));
  }
    if ($form_state['values']['geoX'] == '') {
     // We notify the form API that this field has failed validation.
       form_set_error('geoX',
       t('Empty field'));
   }
    if ($form_state['values']['geoY'] == '') {
     // We notify the form API that this field has failed validation.
       form_set_error('geoY',
       t('Empty field'));
   }
    if ($form_state['values']['anteckning'] == '') {
       // We notify the form API that this field has failed validation.
       form_set_error('anteckning',
     t('Empty field'));
   }
 
}

function saljare_nameform_submit($form, &$form_state) {
    db_set_active('jaktofiske');

    $anteckning = $form_state['values']['anteckning'];
$namn = $form_state['values']['namn'];
$geoX = $form_state['values']['geoX'];
$geoY = $form_state['values']['geoY'];
$adress = $form_state['values']['adress'];

   $sql = "INSERT INTO {saljare} (anteckning, namn, geoX, geoY, adress)
          VALUES ('%s' ,'%s', '%s', '%s', '%s')";
$result = db_query($sql,$anteckning,$namn,$geoX,$geoY,$adress);
  
    db_set_active('default');
    if(!$result)    {
      form_set_error(t('DB INSERT misslyckades!'));
    }
 
}

Du har händelsevis inte fått

fabsor's picture

Du har händelsevis inte fått in en tom rad eller ett mellanslag innan eller efter <?php-taggen? Felet indikerar att du gör output på första raden nämligen.

Grejen med php är att allt som är utanför <?php-taggar räknas som output som skickas tillbaka till användaren. Har du alltså ett blanksteg, eller vad som helst innan <?php-taggen så skickas det tillbaka till användaren, och förstör eventuella http-headers php sätter. Det kan mycket väl orsaka dina problem =)

Kontrollera noga att alla dina filer börjar med <?php och INGET annat, inga blanksteg eller tomma rader eller någt sådant.

Det är faktiskt möjligt att strunta i slut-php-taggen i dina moduler, det gör att du kan försäkra dig om att det inte kommer ut nåt whitespace i slutet av modulen.

//Fabian Sörqvist

Ja, det låter ju helt klart

masu0105's picture

Ja, det låter ju helt klart som det skulle kunna vara nått sånt det beror på. Men jag har gått igenom koden flera gånger och det första i filen är <?php och slut taggen har jag inte använt. Kan det ha någon betydelse att jag konverterat filernas teckenkodning från ANSI till UTF-8?

borde inte ha nån betydelse...

fabsor's picture

Men vill du vara på den säkra sidan kan du ju alltid skapa ett nytt dokument med UTF-8-encoding, kopiera in allt efter <?php-taggen och klistra in i den nya filen och sedan ta bort den. Vem vet, kanske hamnat nåt lurt tecken innan iaf...

//Fabian Sörqvist

Nä, det fungerade inte iaf

masu0105's picture

Nä, det fungerade inte iaf mycket märkligt. Jag får leta vidare och se om jag hittar något nu har jag ju iallafall kommit en bit på väg. Tack för hjälpen!

Efter att jag ändrat tillbaka

masu0105's picture

Efter att jag ändrat tillbaka kodningen av .module filerna till ANSI fungerar det igen. Förstår inte hur det kan ha orsakade felet men jag är glad att det fungerar iallafall, även om jag inte kan använda åäö nu.

Sweden

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: