2012-05-01 2 views
0

Этот вопрос был дан ответ (см вопрос)PHP ошибка, приводящая к пустой странице (отчетов об ошибках работает правильно)

Оригинальный вопрос: Я создал сайт, который работает правильно и не имеет никаких проблем. Затем мы начали миграцию с сервера на основе VPS на настоящий выделенный сервер. При этом наша хостинговая компания обновила нас от CentOS 4 до CentOS 6, от PHP 5.2.9 до PHP 5.3 и переключила нас с DSO на SuPHP. Теперь новый сервер вызывает ошибку, которой у нас раньше не было. Одна из наших страниц показывает пробел, и я сузил ее до одной строки кода (строка 26).

1. class directoryByLetterReverse{ 
2.  private $da=0; 
3.  public $category; 
4.  public $letter; 
5.  public $listing; 
6.  function __construct($letter,$category,$conn){ 
7.   $this->letter=$letter; 
8.   $this->category=$category; 
9.   $recordSet=&$conn->Execute('SELECT members.Member_ID AS MemberID, companies.CompanyName AS CompanyName, members.IPAddress AS IPAddress, directory_table.dir_id, members.BusinessType_ID, members.MemberType FROM members Inner Join companies ON companies.Company_ID = members.Company_ID Left Join directory_table ON directory_table.member_id = members.Member_ID WHERE companies.CompanyName LIKE "'.$this->letter.'%" AND members.BusinessType_ID LIKE "'.$this->category.'" AND members.published="1" ORDER BY directory_table.dir_id DESC, members.Member_ID DESC;'); 
10.   if(!$recordSet){ 
11.    print $conn->ErrorMsg(); 
12.   } else { 
13.    $this->listing[0]['memberid']=''.$recordSet->fields[0].''; 
14.    $this->listing[0]['companyname']=''.$recordSet->fields[1].''; 
15.    $this->listing[0]['ipaddress']=''.$recordSet->fields[2].''; 
16.    $this->listing[0]['dirid']=''.$recordSet->fields[3].''; 
17.    $this->listing[0]['typeid']=''.$recordSet->fields[4].''; 
18.    $this->listing[0]['memtype']=''.$recordSet->fields[5].''; 
19.    while($array=$recordSet->FetchRow()){ 
20.     $this->da++; 
21.     $this->listing[$this->da]['memberid']=''.$recordSet->fields[0].''; 
22.     $this->listing[$this->da]['companyname']=''.$recordSet->fields[1].''; 
23.     $this->listing[$this->da]['ipaddress']=''.$recordSet->fields[2].''; 
24.     $this->listing[$this->da]['dirid']=''.$recordSet->fields[3].''; 
25.     $this->listing[$this->da]['typeid']=''.$recordSet->fields[4].''; 
26.     $this->listing[$this->da]['memtype']=''.$recordSet->fields[5].''; < - - - - this line right here is what is causing the problem 
27.    }; 
28.   }; 
29.  } 
30.  function returnSingle($j){ 
31.   return $this->listing[$j]['memberid'].' '.$this->listing[$j]['companyname'].' '.$this->listing[$j]['ipaddress'].' '.$this->listing[$j]['dirid']; 
32.  } 
33. } 

Для жизни меня я не могу найти ничего плохого с линией 26, но если бы я оставил его там, я получаю пустую страницу, если я закомментируйте, все работает (пока вы не перейдете на страницу, которая ссылается на нее, но я ожидаю, что ее нарушу).

Кроме того, я просто использую библиотеку абстракции базы данных ADOdb (http://adodb.sourceforge.net/) для взаимодействия с MySQL.

Оказывается, в коде нет ничего плохого, сервер тестирования просто имеет ограниченную производительность и не может обрабатывать нагрузку на загрузку нераспакованной страницы. спасибо за комментарии, поскольку они заставили меня думать в правильном направлении, чтобы найти то, что мне нужно.

+0

Какая единственная строка кода вы ее сузили? – dweiss

+0

oops, я отредактировал сообщение, но это строка 26 –

+0

Какая ошибка вы получаете? Вы регистрируете ошибки PHP? Вы регистрируете ошибки apache? – hakre

ответ

0

И без ";" строки 27 и 28, все еще не работает?

+0

попробовал это тоже, infact я добавил их, пытаясь заставить его работать, не имеет значения, но если я ставлю // в начале строки 26, все начнется за работой –