Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Biala strona lub 500 w moim skrypcie
Forum PHP.pl > Forum > Przedszkole
portals
Witam
Posiadam na swoim forum skrypt do obsługi pobierania plików. Skrypt na starym serwerze działał bez problemów.
Na nowym serwerze wyrzuca błąd 500 lub pustą stroną, niezależnie od ustawienia raportowanie błędów.Skrypt korzysta z IPBWI oraz smarty. Przypuszczam że błąd jest w tym pliku:
  1. <?php
  2. class user
  3. {
  4.  
  5.  
  6. public function __construct($id = -1)
  7. {
  8. global $member;
  9.  
  10. if ($id == "-1")
  11. {
  12. $this->browser = $_SERVER['HTTP_USER_AGENT'];
  13. $this->ip = $_SERVER['REMOTE_ADDR'];
  14. $this->name = $member["name"];
  15. $this->name = "portals"; //w celach testowych
  16. if (!isset($this->name)) $this->logged = false;
  17. else
  18. {
  19. $this->logged = true;
  20.  
  21. if ($member['avatar_type'] == "upload") $this->avatar = "http://www.stalkerteam.pl/uploads/{$member["avatar_location"]}";
  22. else $this->avatar = $member["avatar_location"];
  23. }
  24. }
  25. }
  26.  
  27. public function getUser($name)
  28. {
  29. global $db;
  30. if ($name == -1) $name = $this->name;
  31. if ($this->logged == true)
  32. {
  33. $result = $db->query("SELECT * FROM st_users WHERE name = '{$this->name}'");
  34. if ($result->num_rows == 0)
  35. {
  36. //Gdy brak takiego użytkownika
  37. $result = $db->query("INSERT INTO st_users (name, downloaded_current_month,`limit`) VALUES ('{$this->name}','0', '6000')");
  38. $result = $db->query("SELECT * FROM st_users WHERE name = '{$this->name}'");
  39.  
  40. }
  41.  
  42. $user = $result->fetch_array();
  43. }
  44.  
  45. $this->downloaded_current_month = $user['downloaded_current_month'];
  46. $this->download_limit = $user['limit'];
  47. $this->id = $user['id'];
  48. $this->user_type = $user['user_type'];
  49. $this->remaining_current_month = $this->download_limit - $this->downloaded_current_month;
  50.  
  51. if ($this->downloaded_current_month != 0) $this->remaining_percentage = ($this->download_limit / $this->downloaded_current_month) * 10;
  52. else $this->remaining_percentage = 100;
  53.  
  54. if ($this->user_type == 1) $this->admin = true;
  55. else $this->admin = false;
  56.  
  57. return true;
  58.  
  59. }
  60.  
  61.  
  62. public function can_download_this_file($size)
  63. {
  64. $size = (int) $size;
  65. if ($this->downloaded_current_month + $size <= $this->download_limit) return True;
  66. else return False;
  67. }
  68.  
  69. public function subtract_transfer($mb)
  70. {
  71. global $db,$error;
  72. $mb = (int) $mb;
  73. $out = $this->downloaded_current_month + $mb;
  74.  
  75. if ($out > $this->download_limit)
  76. {
  77. //To raczej nie powinno mieć miejsca bo sprawdzenie jest przy wywołaniu.
  78. $error->script_error = 'Error in subtract_transfer($mb) out is negative';
  79. $error->end();
  80. }
  81. $result=$db->query("UPDATE st_users SET downloaded_current_month = '$out' WHERE id = '{$this->id}'");
  82.  
  83. }
  84.  
  85. public function is_downloaded_this_file($file_id)
  86. {
  87. global $db;
  88. $result=$db->query("SELECT * FROM st_downloads WHERE user_id = '{$this->id}' AND file_id = '{$file_id}'");
  89. if ($result->num_rows == 0) return false;
  90. else return true;
  91.  
  92.  
  93. }
  94.  
  95. }
  96.  
  97. ?>
  98.  
d2b
Sam sobie odpowiedziałeś na swoje pytanie.

,, Do czasu przeniesienia na inny serwer ''.

Wystarczy zobaczyć jakie opcje miałeś na poprzednim włączone, a jakie masz tu. Może administrator coś blokuje.
Błąd ten to normalka przy zmianie konfiguracyjnej serwera. A u ciebie się taka pojawiła.
Warto sprawdzić, z czego korzysta ten twój skrypt downloadu i co wymaga włączonego od serwera.
portals
Wydaję mi się że nie korzysta z niczego specjalnego (przynajmniej ta cześć które jest teraz wykonywana ). Administracja mówi że nie ma żadnych blokad i to błąd w kodzie.
Na tym serwerze jest php 5.3 a nie wiem jakie było na starym.
dram
porównaj wartości phpinfo();
I jak znajdziesz rozwiązanie mam ten sam problem (time out).. Daj znać
portals
Nie widzę poważnych zmian oprócz wersjia php na starym było 5.2 na tym 5.3.
Administracaj pisał że wysytyępuje błąd Premature end of script headers
wNogachSpisz
Cytat(dram @ 5.01.2012, 22:41:48 ) *
porównaj wartości phpinfo();
I jak znajdziesz rozwiązanie mam ten sam problem (time out).. Daj znać

Nie, Twój problem jest inny, Ty masz problem ze zrozumieniem, że wystarczy zmienić ustawienia Apacha dotyczące maksymalnego czasu wykonywania skryptu.

Natomiast autor bierzącego tematu ma problem z błędem 500, który często jest niełatwy w debugowaniu.
portals
Niestety ciągle nie udało znaleść mi się przyczyn sad.gif. Ma ktoś jakiś pomysł?
EDIT:Problem występuję po wykonaiu dowolnego zapytanie do bazy danych.

Classa bazy danych jest taka:
  1. <?php
  2.  
  3. class sqli extends mysqli
  4. {
  5. function init()
  6. {
  7.  
  8. if ($this->dbnum == 1)
  9. {
  10. $this->db = new mysqli('localhost', '***************','**********', '***************');
  11. }
  12.  
  13. if ($this->dbnum == 2)
  14. {
  15. $this->db = new mysqli('localhost', '*****************','**********', '***********');
  16. }
  17.  
  18. if ($this->db->connect_error)
  19. {
  20. throw new ErrorException("Nie udało się ustanowić połączenia z bazą: {$this->dbnum}");
  21. }
  22.  
  23. $this->query("SET NAMES 'utf8'");
  24. $this->query("SET character_set_client = utf8");
  25. $this->query("SET character_set_results = utf8");
  26. $this->query("SET character_set_connection = utf8");
  27. }
  28. public function query($str)
  29. {
  30. global $error;
  31. $result = $this->db->query($str);
  32.  
  33. //Pewnie jest funkcja w PHP od tego ale nie znam jej
  34. $this->query_log .= $str;
  35.  
  36. if ($result === false)
  37. {
  38. $error->sql_error = $this->db->error;
  39. $error->end();
  40. }
  41. return $result;
  42. }
  43. }
  44.  
  45. ?>
  46.  


Przepisałem ne PDO i działa.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.