php boş bir sayfa vererek, hiç hata

12 Cevap php

Hiçbir hata veriyor, ama aynı zamanda hiçbir şey ekranda görüntülenen bir AJAX uygulaması, aşağıdaki bölümü var, bu yüzden sorun burada yatıyor emin değilim. Ile doğrudan bir tarayıcıdan bu sayfayı çağıran? Cmd & id = 1 geri dönmek, hatta bunu olmadan çağırarak gerekir? Cmd cmd hata mesajı döndürür.

edit: eklendi örnekler: Ben cmd hata mesajı alıyorum, ama ben geçmek & id = 1 iken (1 geçerli bir id), hiçbir html görünümü kaynak tamamen boş olduğunu, ne olursa olsun geri alır. Ben yanlış echo veya benzer bir şey kullandınız mı?

edit2: ilk satırı olarak yankı eklendi: ilk yankı olursa olsun görmedim

Edit3: geçerli cmd yazın ve id paramters ile çağırırken eski bir sürümüne geri gidiyor ve yine tüm değişiklikleri yaptıktan sonra, ben şimdi testi charset çıkışı almak. Ben kullanıyorum kod aşağıda yapıştırılan ne aynıdır.

kodu:

<?php
echo "hello world";    
error_reporting(E_ALL);

if (isset($_GET["cmd"]))
  $cmd = $_GET["cmd"];
else
  die("You should have a 'cmd' parameter in your URL");

$id = $_GET["id"];

$con = mysqli_connect("localhost", "user", "password", "db");
echo "test con";

if(!$con)
{
  die('Connection failed because of' .mysqli_connect_error());
  echo "test error";
}

//$con->query("SET NAMES 'utf8'"); 
$con->set_charset("utf8"));
echo "test charset";

if($cmd=="GetSALEData")
{
  echo "test cmdifloop";

  if ($getRecords = $con->prepare("SELECT * FROM SALES WHERE PRODUCT_NO = ?"))
  {
    echo "test recordifloop";

    $getHtml = $con->prepare("SELECT PRODUCT_DESC FROM SALES WHERE PRODUCT_NO = ?");
    $getHtml->bind_param("s", $id);
    $getHtml->execute();
    $getHtml->bind_result($PRODUCT_DESC);

    $getRecords->bind_param("s", $id);
    $getRecords->execute(); 
    $getRecords->bind_result($PRODUCT_NO, $PRODUCT_NAME, $SUBTITLE, $CURRENT_PRICE, $START_PRICE,
                             $PRICE_COUNT, $QUANT_TOTAL, $QUANT_SOLD, $ACCESSSTARTS, $ACCESSENDS,
                             $ACCESSORIGIN_END, $USERNAME, $BEST_PRICEDER_ID, $FINISHED, $WATCH,
                             $BUYITNOW_PRICE, $PIC_URL, $PRIVATE_SALE, $SALE_TYPE, $ACCESSINSERT_DATE,
                             $ACCESSUPDATE_DATE, $CAT_DESC, $CAT_PATH, $COUNTRYCODE, $LOCATION,
                             $CONDITIONS, $REVISED, $PAYPAL_ACCEPT, $PRE_TERMINATED, $SHIPPING_TO,
                             $FEE_INSERTION, $FEE_FINAL, $FEE_LISTING, $PIC_XXL, $PIC_DIASHOW,
                             $PIC_COUNT, $ITEM_SITE_ID
                            ); 
    while ($getRecords->fetch()) 
    {
      $ccodes = array(  "1" => "USA",
                       "77" => "Germany",
                       "16" => "Austria",
                      "122" => "Luxemburg",
                      "193" => "Switzerland",
                     );

      $conditions = array( "0" => "USA",
                          "77" => "Germany",
                          "16" => "Austria",
                         );

      $country = $ccodes[$COUNTRYCODE];
      if ( $country == "" ) $country = "Not applicable";

      $columns = array('FINISHED', 'WATCH', 'PRIVATE_SALE', 'REVISED', 'PAYPAL_ACCEPT', 'PRE_TERMINATED', 'PIC_XXL', 'PIC_DIASHOW');

      foreach($columns as $column) {
        $$column = $row[$column] ? 'YES' : 'NO';
      }

      imageResize($PIC_URL, 250, 300);
      file_put_contents($id, file_get_contents($PIC_URL));

      $html = htmlentities(json_encode($PRODUCT_DESC));
      $shortDate = strftime("%d %m %Y", strtotime($ACCESSSTARTS));

      echo "<h1>".$PRODUCT_NAME."</h1>
<div id='leftlayer' class='leftlayer'>
<p><strong>Username: </strong>".$USERNAME."
<p><strong>PRODUCT Number: </strong>".$PRODUCT_NO."
<p><strong>Subtitle: </strong>".$SUBTITLE."
<p><strong>SALE Start: </strong>".$ACCESSSTARTS." 
<p><strong>SALE End: </strong>".$ACCESSENDS."
<p><strong>SALE Type: </strong>".$SALE_TYPE."
<p><strong>Category: </strong>".$CAT_DESC."
</div>
<div class='leftlayer2'>
  <p><strong>Condition: </strong> ".$CURRENT_PRICE."
  <p><strong>Total Items: </strong> ".$QUANT_TOTAL."
  <p><strong>Total Sales: </strong> ".$QUANT_SOLD."
  <p><strong>Start Price: &#8364</strong> ".$START_PRICE."
  <p><strong>Buyitnow Price: &#8364</strong> ".$BUYITNOW_PRICE."
  <p><strong>PRICEs: </strong> ".$PRICE_COUNT." 
  <p><strong>Revised: </strong> ".$REVISED."
</div>
<div class='leftlayer2'>
  <p><strong>Private: </strong> ".$PRIVATE_SALE."
  <p><strong>Finished: </strong> ".$FINISHED."
  <p><strong>Cancelled: </strong> ".$PRE_TERMINATED."
  <p><strong>Paypal: </strong> ".$PAYPAL_ACCEPT."
  <p><strong>Country: </strong> ". $country ."
  <p><strong>Location: </strong> ".$LOCATION."
  <p><strong>Shipping to: </strong> ". $country ."
</div>
<div id='rightlayer'>
 <img src='".$PIC_URL."' width='".$imageSize["width"]."' height='".$imageSize["height"]."'>
 <p><a href='#' onclick=\"makewindows(" . $html . "); return false;\">Click for full description </a></p>
</div>
</div>
</div>";

    } 
  }

  function imageResize($imageURL, $maxWidth, $maxHeight)
  {
    $imageSize["width"] = 0;
    $imageSize["height"] = 0;

    $size = getimagesize($imageURL);
    if ($size) {
      $imageWidth  = $size[0];

      $imageHeight = $size[1];
      $wRatio = $imageWidth / $maxWidth;
      $hRatio = $imageHeight / $maxHeight;
      $maxRatio = max($wRatio, $hRatio);

      if ($maxRatio > 1) {
        $imageSize["width"] = $imageWidth / $maxRatio;
        $imageSize["height"] = $imageHeight / $maxRatio;
        return $imageSize;
      } else {
        $imageSize["width"] = $imageWidth;
        $imageSize["height"] = $imageHeight;
        return $imageSize;
      }
    } else {
      die(print_r(error_get_last()));
    }
  }

}

Ben aralık için özür dilerim, ama ben kod düğmesine bastığınızda otomatik olarak gerçekleşir.

12 Cevap

Bu hat 22 üzerinde ekstra bir parantez var

Bu

$con->set_charset("utf8"));

Bu olması gerekiyor

$con->set_charset("utf8");

Gelecek için iki hata ayıklama ipuçları. İlk için, web host shell erişim gerekir, ya da geliştirme makinede yerel PHP yüklemeniz gerekir. Eğer Unix çalışan iseniz, zaten var olabilir. Bir terminal açın ve yazın

php -v

Eğer varsa, yaparak bir PHP dosyası sözdizimi kontrol edebilirsiniz

//on *nix
php yourfile.php

//or on windows
c:\path\to\php.exe yourfile.php

Bu will bail on gross syntax errors. Also, google/search this site for "setup php locally tutorial" or something similar to learn how to get a full copy of A Webserver, mysql database and php running on your own machine.

Eğer yerel bir kopyasını yüklerseniz daha kolay olacaktır, ikinci öneri, hata günlüklerini kontrol etmektir. PHP hata iletileri görüntüleniyor zaman bile, hataları hala bir yerlerde bir dosyaya kaydedilir. Sizin durumda, günlük dosyasında böyle bir şey görürdük

PHP Parse error:  syntax error, unexpected ')' in foo.php on line 22

Bu, hataları görmek yardımcı olacaktır:

ini_set('display_errors', '1');

Burada ekstra bir kapanış parantezi var:

$con->set_charset("utf8"));

Yardımcı olabilir:

  1. ({[) (0]} gibi) Web sunucusu günlüğü Monitörü

  2. Firebug kullanmak ve AJAX yanıtı, komut gelen Konsolu görmek. Hata görünebilir

Eğer çıkış test etmek için komut dosyası üstünde hemen bir baskı ya da echo deyimi yerleştirerek temel bir test denediniz mi?

<?php

  print "Test";

?>

Ben de bağlantı girişiminde sonra or die($msg) catch kullanarak öneririm.

Davanız için iyi olurdu. Sadece bir başlangıç ​​noktası olarak. Gerektiğinde Ben zaman zaman bunu. Aksine sorunu varsayarak daha bazı ağır-karmaşık sorun çoğu kez, vb yanlış zamanda doğru sayfasına erişerek, yanlış sayfasına erişerek, istek değişkenleri beklenmedik bir durum olarak çıkıyor, bir

Ayıklama yankı yıllardan hiçbiri ulaşıldığında, o başarısızlık noktası ben bir şey eksik sürece, veritabanı bağlantısı etrafında olacak gibi görünüyor.

Bağlantı ayrıntılarını kontrol edin ve mysqli uzantısı etkin olması edin.

Ben açıklanamaz genellikle IE6 ama bazen diğer tarayıcılarda, boş bir sayfa alacağı benzer bir sorun karşılaştım. Bu bir karakter kodlama sorunu olduğu ortaya çıktı. Ben bazı garip karakterler çıktısı, ve tarayıcılar kodlama içeriğine dayalı ne tahmin edildi. Ben açıkça bu başlığı ayarlayarak sabit:

header('Content-type: text/html; charset=utf-8');
$getHtml->bind_param("s", $id);

Bu hataya neden olur, bilmiyorum, ama bu ve getRecords "i" ilk parametre olarak sahip bind_param olmamalıdır?

Calling this page directly from a browser with ?cmd&id=1 should return

Eğer "dönüş" ile ne demek istiyorsunuz? Senin kod ne görebilirsiniz itibaren, ?cmd= GetSALEData or else a blank page will be returned, because everything is wrapped inside of the if($cmd=="GetSALEData") deyimi gerekir.

Correction: Sen sorgu dizesi varsa cmd "GetSALEData" dışında bir şey ayarlanmış "test contest charset" görmelisiniz. (Bu iki test kodu daha sonra ilave edildi.)

Birkaç iyi önerileri denediğiniz için burada bulunmaktadır. Ben henüz görmedim, bir PHP için ayrılan yeterli bellek yok emin olmaktır. Millet üzerinde drupal.org ways to increase PHP's memory allocation aşağı iyi bir mola vardır.

Bu ince uzun error_reporting() function alır gibi çalışması gerekir - sunucu geneli böylece komut error_reporting(E_ALL); bu yürütme güvenerek, hataları görüntülemek üzere ayarlanmışsa, çünkü bu oluyor nedeni idam. Ancak, if there is a parse error, the error_reporting(E_ALL) idam almazsınız ve orada foreyou yazılır asla php.ini hata raporlama ayarları gibi bir hata görmezsiniz.

Sizin için tek çözüm gibi htaccess veya php.ini gibi yüksek yerlerde error_reporting ayarlamaktır. Ama şimdi en azından bir blankpage bir ayrıştırma hatası = biliyorum!

Benim durumumda, ben bir şekilde sunucuyu aşırı. Manuel çöp toplama yapıyor onu ya da beni çözdü.

Hata günlüğü gösterdi [notice] caught SIGTERM, shutting down