Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Exception thrown without a stack frame :|
Forum PHP.pl > Forum > PHP > Object-oriented programming
pawel_
Witam.
Mam sobie taki o to kodzik (niżej) który wywala mi
Kod
Fatal error: Exception thrown without a stack frame in Unknown on line 0

ale tylko na serwerze z Debianem 3.1/ PHP5.1.2/ Apache 2.2 sad.gif Na domowym serwerze (w2k/ php5.1.2/ apache 2.2 || w2k/ php5.1.2/ IIS 5.0) wszystko chodzi spoko :? Żeby było śmieszniej, jest to panel administracyjny (w nim wywala taki błąd, dzięki czemu nie można się zalogować), ale niżej wszystko chodzi spoko (czyli reszta aplikacji, widoczna dla klientów). W tym pliku ma także problem z załadowaniem redExc (moja klasa wyjątków - kod też niżej). W części klienckiej ładuje się bez problemów.
Mógłby mi ktoś pomóc?
Z góry dziękuję za pomoc
  1. <?php
  2.  
  3. require_once('./common_h.php');
  4. require_once('../cfg.php');
  5. require_once('../nacia/class.redExc.php'); // muszę dodawać tę linię, bo nie może też załadować tej klasy wyjątków :? 
  6. $path = '../';
  7. set_include_path(get_include_path() . PATH_SEPARATOR . $path);
  8. try {
  9. $db = mysql::connect();
  10. $db->setCacheDir('../_cache/');
  11. $www = html::initialize();
  12. try {
  13. $session = new session(); // własna obsługa sesji, może zwrócić wyjątęk, więc lepiej to przechwycić
  14. } catch(redExc $e) {
  15. echo "Nie mogę utworzyć sesji!"; echo $e;
  16. die(); // jeżeli nie stworzy sesji to w ogóle nie ma po co dalej działać
  17. }
  18.  
  19. if(isset($_GET['logout'])) {
  20. session_destroy(); // jeżeli w adresie jest polecenie wylogowania, to właśnie tutaj to robimy
  21. }
  22.  
  23. $www->setDir('../tpl');
  24. $www->setCdir('../tpl_c');
  25. if(empty($_SESSION['admin'])) { // Sprawdzanie stanu zalogowania
  26. if(empty($_POST['login'])) { // Jeżeli nie został wysłany POST, to pokaże formularz
  27. $www->assign('logged', false);
  28. }
  29. else {
  30. if($_POST['login'] == 'admin' && $_POST['password'] == 'abc') { // na razie w taki sposób stworzony admin, będzie z bazy
  31. $www->assign('logged', true); // dane się zgadzają, więc zalogowany:)
  32. $_SESSION['admin'] = $_POST['login']; // dodaj do sesji, że zalogowany
  33. header('Location: index.php');
  34. exit(0);
  35. }
  36. else {
  37. $www->assign('logged', false); // złe dane -> formularz do logowania
  38. }
  39. }
  40. $www->setFile('admin.tpl');
  41. $www->show(); // pokaż szablon
  42. } else { // Zalogowany
  43. if($_GET['what'] == 'products') { // rozpoczynamy blok produktów
  44. if($_GET['action'] == 'add') { // dodawanie produktu
  45. if(empty($_POST['name'])) { // nie wysłany post, pokazujemy formularz
  46. $www->assign('form', true); // pokaż formularz
  47. $sections = new sections();
  48. $www->assign('sections', $sections->getAll()); // pokazuje wszystkie działy
  49. } // empty(post[name])
  50. else {
  51. $www->assign('form', false); // nie pokazujemy formularza
  52. $prod = new product(); // inicjujemy klasę produktu
  53. try {
  54. $prod->newProduct($_POST['name'], $_POST['descr'], $_POST['count'], $_POST['price'], sections::getByID($_POST['section'])); // tworzymy nowy produkt. może wystąpić wyjątek, a więc łapiemy to :)
  55. $www->assign('success', true); // udało się
  56. } catch (redExc $e){
  57. $www->assign('success', false); // nie udało się
  58. $www->assign('error', $e); // pokazujemy komunikat o błędzie
  59. } // koniec łapania wyjątków
  60. } // else empty(post[name])
  61. } // get[action] == add
  62. elseif($_GET['action'] == 'del') { // usuwanie produktu
  63. if(empty($_GET['id'])) { // jeżeli nie jest podany jaki produkt usunąć
  64. $www->assign('list', true); // pokazujemy listę produktów
  65. $products = new products();
  66. $www->assign('prod_list', $products->getAll()); // przekazujemy listę produktów
  67. } // if empty get[id]
  68. else { // wiemy który usunąć
  69. $product = new product($_GET['id']); // tworzymy dany produkt
  70. $www->assign('list', false); // nie pokazujemy listy
  71. try {
  72. $product->deleteProduct(); // skasuj dany produkt
  73. $www->assign('success', true); // udało się
  74. } catch(redExc $e) {
  75. $www->assign('success', false); // nie udało się
  76. $www->assign('error', $e); // pokaż błąd
  77. }
  78. } // else if empty get[id]
  79. } // elseif get[action] == del
  80. } // get[what] == products
  81. elseif($_GET['what'] == 'sections') { // blok działów
  82. if($_GET['action'] == 'add') { // dodajemy dział
  83. if(empty($_POST['name'])) { // nie przekazano nazwy
  84. $www->assign('form', true); //po prostu pokazujemy formularz
  85. } // empty(post[name])
  86. else {
  87. $www->assign('form', false); // nie ma formularza
  88. $sections = new sections();
  89. try {
  90. $sections->newSection($_POST['name']); // tworzymy nowy dział z podaną nazwą
  91. $www->assign('success', true); // udało się
  92. } catch (redExc $e){
  93. $www->assign('success', false);// nie udało się
  94. $www->assign('error', $e); // przekazujemy błąd
  95. }
  96. } // else empty(post[name])
  97. } // if get[action] == add
  98. elseif($_GET['action'] == 'del') { // usuwamy dział
  99. if(empty($_GET['id'])) { // nie pokazano który
  100. $www->assign('list', true); // pokazujemy listę
  101. $sections = new sections(); // tworzymy działy
  102. $www->assign('sec_list', $sections->getAll()); // przekazujemy listę działów
  103. } // if empty get[id]
  104. else {
  105. $www->assign('list', false); // nie pokazujemy listy
  106. try {
  107. $sections = new sections(); // tworzymy działy
  108. $sections->delete($_GET['id']); // usuwamy podany dział
  109. $www->assign('success', true); // udało się
  110. } catch(redExc $e) {
  111. $www->assign('success', false); // nie udało się
  112. $www->assign('error', $e); // przekazujemy błąd
  113. }
  114. } // else if empty get[id]
  115. }
  116. } // elseif get[what] == sections
  117. elseif($_GET['what'] == 'info') { // blok informacyjny
  118. if($_GET['action'] == 'add') { // dodajemy informację
  119. if(empty($_POST['info'])) {
  120. $www->assign('form', true); // pokazujemy formularz
  121. } else {
  122. try {
  123. $info = new info_add($_POST['where'], $_POST['info']); //dodajemy
  124. $www->assign('success', true); // udało się
  125. } catch(redExc $e) {
  126. $www->assign('success', false); // nie udało się
  127. $www->assign('error', $e); // przekazujemy błąd
  128. }
  129. }
  130. } // koniec bloku dodawania
  131. elseif($_GET['action'] == 'del') { // rozpoczynamy blok kasowania
  132. if(empty($_GET['id'])) { // nie pokazano który
  133. $www->assign('list', true); // pokazujemy listę
  134. $info = new info_del(); // tworzymy działy
  135. $www->assign('info_list', $info->getAll()); // przekazujemy listę informacji
  136. } // if empty get[id]
  137. else {
  138. $www->assign('list', false); // nie pokazujemy listy
  139. try {
  140. $info = new info_del(); // tworzymy informacje
  141. $info->delete($_GET['id']); // usuwamy podaną informację
  142. $www->assign('success', true); // udało się
  143. } catch(redExc $e) {
  144. $www->assign('success', false); // nie udało się
  145. $www->assign('error', $e); // przekazujemy błąd
  146. }
  147. } // else if empty get[id]
  148. } // koniec bloku usuwania
  149. }
  150.  
  151. // CONST
  152. $www->assign('trace_where',$_GET['what']);
  153. $www->assign('trace_action', $_GET['action']);
  154. $www->assign('logged', true);
  155. $www->assign('user', $_SESSION['admin']);
  156. $www->setFile('admin.tpl');
  157. if(empty($_GET['what'])) {
  158. $_GET['what'] = 'info';
  159. }
  160. $www->assign('what', 'adm_'.$_GET['what'].'_'.$_GET['action'].'.tpl');
  161.  
  162. $www->show();
  163. // CONST END
  164. }
  165. } catch(redExc $e) {
  166. echo $e;
  167. } catch(Exception $e) {
  168. echo $e;
  169. }
  170.  
  171. ?>


Klasa redExc:
wywaliłem kod który rozwalał strone
aleksander
chmolu
To najprawdopodobniej oznacza, że wyjątek został wyrzucony już po wykonaniu kodu (np. w destruktorze, albo w kodzie odpowiedzialnym za zapis danych sesji do bazy danych - w przypadku, gdy korzystasz z własnego mechanizmu sesji).
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.