문제

Ajax 응용 프로그램의 다음 부분이 있습니다. 오류는 없지만 화면에는 아무것도 표시되지 않으므로 문제가 어디에 있는지 확실하지 않습니다. CMD & ID = 1을 사용하여 브라우저에서 직접이 페이지를 호출하거나 CMD없이 전화를 걸어야합니다. CMD 오류 메시지를 반환해야합니다.

편집 : 테스트 사례 추가 : CMD 오류 메시지가 표시되지만 & id = 1 (1이 유효한 ID 임)을 통과하면 HTML이 반환되지 않으면 소스 뷰가 완전히 비워집니다. 에코를 잘못 사용했거나 비슷한 것을 사용 했습니까?

edit2 : echo가 첫 번째 줄로 추가 : 첫 번째 에코는 보이지 않습니다.

EDIT3 : 이전 버전으로 돌아가서 모든 변경 사항을 다시 한 후 유효한 CMD 및 ID 매개 변수로 호출 할 때 테스트 숯 출력을 얻습니다. 내가 사용하는 코드는 아래에 붙여 넣은 것과 동일합니다.

코드:

<?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()));
    }
  }

}

간격에 대해 사과드립니다. 그러나 코드 버튼을 누르면 자동으로 발생합니다.

도움이 되었습니까?

해결책

당신은 22 행에 여분의 괄호가 있습니다

이것

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

이것이어야합니다

$con->set_charset("utf8");

미래를위한 두 가지 디버깅 팁. 먼저 웹 호스트에 대한 쉘 액세스가 필요하거나 개발 시스템에 로컬로 PHP를 설치해야합니다. UNIX를 실행하는 경우 이미 가질 수 있습니다. 터미널을 열고 타이핑하십시오

php -v

당신이 그것을 가지고 있다면, 당신은 php 파일의 구문을 확인하여

//on *nix
php yourfile.php

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

이것은 총 구문 오류에 대해 구제합니다. 또한 Google/Google/Setup PHP 로컬 튜토리얼 "또는 유사한 내용을 검색하여 Webserver, MySQL 데이터베이스 및 자신의 컴퓨터에서 실행되는 PHP의 전체 사본을 얻는 방법을 배우는 유사한 내용입니다.

로컬 사본을 설치하면 더 쉬운 두 번째 제안은 오류 로그를 확인하는 것입니다. PHP가 오류 메시지를 표시하지 않더라도 오류는 여전히 어딘가에 파일에 로그인됩니다. 귀하의 경우 로그 파일에서 이와 같은 것을 보았을 것입니다.

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

다른 팁

이렇게하면 오류를 볼 수 있습니다.

ini_set('display_errors', '1');

여기에는 추가 폐쇄 괄호가 있습니다.

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

출력을 테스트하기 위해 스크립트 상단에 즉시 인쇄 또는 에코 문을 배치하는 기본 테스트를 시도 했습니까?

<?php

  print "Test";

?>

나는 또한 an을 사용하는 것을 제안 할 것이다 or die($msg) 연결 시도 후에 잡으십시오.

당신의 경우에 괜찮을 것입니다. 출발점으로. 필요할 때 때때로이 작업을 수행합니다. 문제가 큰 복잡한 문제라고 가정하기보다는 종종 요청 변수, 잘못된 페이지에 액세스하고 잘못된 시간에 오른쪽 페이지에 액세스하는 등의 예기치 않은 조건으로 판명됩니다.

도움이 될 수 있습니다 :

  1. 웹 서버 로그를 모니터링하십시오 (예 : tail -f /var/log/apache2/error.log)

  2. Firebug를 사용하고 콘솔에서 스크립트에서 나오는 Ajax 응답을 참조하십시오. 오류가 나타날 수 있습니다

디버그 에코에 도달하지 않으면 실패 지점은 무언가를 놓치지 않는 한 데이터베이스 연결 주위에있는 것 같습니다.

연결 세부 정보를 확인하고 MySQLI 확장 기능이 활성화되어 있는지 확인하십시오.

비슷한 문제가 발생했는데, 비슷한 문제가 발생했는데, 비슷한 문제가 발생했지만 일반적으로 IE6에서도 다른 브라우저에서 빈 페이지를 얻을 수 있습니다. 캐릭터 인코딩 문제로 판명되었습니다. 나는 이상한 캐릭터를 출력했고 브라우저는 인코딩이 내용을 기반으로 한 것을 추측하고있었습니다. 이 헤더를 명시 적으로 설정하여 고정했습니다.

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

이것이 오류를 일으킬 지 모르겠지만 GetRecords bind_param에 "i"가 첫 번째 매개 변수로 사용되지 않아야합니까?

이 페이지를 브라우저에서 직접 호출합니다 ?cmd&id=1 돌아와야합니다

"반환"이란 무엇을 의미합니까? 내가 당신의 코드에서 볼 수있는 것에서 당신은 필요합니다 ?cmd=GetSALEData 또는 모든 것이 내부에 래핑되기 때문에 빈 페이지가 반환됩니다. if($cmd=="GetSALEData") 성명.

보정: 넌 봐야 해 "test contest charset"쿼리 문자열이있는 경우 cmd "getSaledata"이외의 것으로 설정하십시오. (이 두 테스트는 나중에 코드에 추가되었습니다.)

여기에는 몇 가지 좋은 제안이 있습니다. 내가 아직 보지 못한 것은 PHP에 충분한 메모리가 할당되는지 확인하는 것입니다. 사람들은 그다지 drupal.org 좋은 분류를하십시오 PHP의 메모리 할당을 높이는 방법.

if-else 진술 주위에 괄호를 넣으십시오. 코드를 편집 한 사람이 잠재적 인 문제를 "고정"했을 수 있다고 생각합니다.

이런 일이 발생하는 이유는 서버 구성이 오류가 표시되지 않도록 설정되었으므로 스크립트가이를 실행하는 데 의존하기 때문입니다. error_reporting(E_ALL); - 이것은 오래 작동해야합니다 error_reporting() 기능이 실행됩니다. 하지만, 구문 분석 오류가있는 경우 error_reporting(E_ALL) 실행되지 않습니다, 그리고 php.ini 오류보고 설정이 덮어 쓰지 않기 때문에 Foreyou는 오류가 표시되지 않습니다.

유일한 솔루션은 htaccess 또는 php.ini와 같은 더 높은 곳에서 Error_Reporting을 설정하는 것입니다. 그러나 지금은 적어도 빈 페이지 = 구문 분석 오류를 알고 있습니다!

오류가없고 빈 페이지를 계속 받으면 PHP 프로세스를 설치하는 것이 좋습니다.

yum -y install php-process

다른 경우에는 배를 설치하지 않으면 그러한 오류가 발생합니다.

yum -y install php-pear php-pear-DB 또는 DB를 설치하려면 pear install DB

이것이 빈 페이지 문제가있는 사람에게 도움이되기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top