Bir dizi döngü PHP, tutarsız bir 500 sunucu hatası üretir

0 Cevap

Ben bir veritabanı tablosundan HTML parçacıkları almak ve bunları görüntülemek için aşağıdaki kodu kullanarak edildi. Bu benim eski web host üzerinde iyi çalıştı, ama yeni bir web barındırma hareket sonra 500 Internal Server hataları (oldukça yararsızdır) başladım. Her iki ana PHP 5.2.x. kullanın

$query = "SELECT id, html FROM $tableName ORDER BY id DESC LIMIT 0, 300";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
    $myArray[] = $row;
}

foreach($myArray as $m) {
    echo $m['html'];
}

Seçici kodu yorum, ben foreach döngü sorunu daralmış. Sonunda ben ($offset aşağıya bakınız) Ben öğelerden bazıları kapalı kıyılmış eğer sayfası (500 hatası ile) görüntülemek için alabilir bulundu. Bazen, bazen 100 veya daha fazla, bir ofset 50 kullanmak zorunda.

$counter = 0;
$offset = 100;
$limit = count($myArray) - $offset;
while ($counter < $limit) {
    echo $myArray[$counter]['html'];
    ++$counter;
}

Bu bana ayrı HTML parçacıkları ile yanlış bir şey olduğunu düşündürdü. Ben kusurlu satır bulundu kadar ben (yani, $offset=23 çalıştı, ama $offset=22, bu nedenle 23. suçlu satır değil) biri tarafından ofset tek ayarlandı. Ben bu satırın HTML baktı ve gayet olumlu. Sadece bu değil, ama önceki gün benim komut dosyası bile gösteremedi hiçbir sorunları (Bu tablo periyodik olarak eklenen yeni bir HTML vardır ve ben onları sadece en son 300 görüntüleme ediyorum) özellikle HTML pasajı.

Ben de yankı-ing önce bazı temel kontrolleri ekleyerek denedim, ama hiçbir etkisi vardı:

while ($counter < $limit) {
    if ($myArray[$counter]['html'] != false && !empty($myArray[$counter]['html'])) {
        echo $myArray[$counter]['html'];
    }
    ++$counter;
}

Herhangi bir fikir neden eko ve / veya döngü başarısız oluyor? Nasıl yerine 500 sunucu hatası yararlı hataları görebilirsiniz? Ben PHP display_errors açık ve kasten (sayfasında ve hata günlüğü dosyasında hem de) onları zorlamak zaman komut diğer bölgelerinden gelen hatalar görebilirsiniz var.

Update: Apache access log

Tamam, ben ilk ona gittim ve elle düzgün sayfa ekranı izin biliyordum (URL parametresini ?o=1 bakınız) 200 'offset $' ayarlayın. Sonuç:

my.ip.add.ress - p [18/Jun/2010:13:27:36 -0400] "GET /test2/index.php HTTP/1.1" 200 602778 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)"
my.ip.add.ress - p [18/Jun/2010:13:27:47 -0400] "GET /test2/index.php?o=200 HTTP/1.1" 200 418127 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)"

Sonra $offset 1 zorladı (500 hatası üretecektir olan) ve ben bu var:

my.ip.add.ress - - [18/Jun/2010:13:31:06 -0400] "GET /test2/index.php?o=1 HTTP/1.1" 404 - "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)"
my.ip.add.ress - p [18/Jun/2010:13:30:59 -0400] "GET /test2/index.php HTTP/1.1" 200 602731 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)"

Bu 404, ancak tarayıcıda görüntülenen sayfa iki şey der ki: <title> Ayrıca daha sonra 500 Internal Server hatası olduğunu ve sayfa vücut bu tekrarlar ama 404 bahseder çünkü (Henüz kurmak değil) 500 hata HTML sayfasını bulamadı.

0 Cevap