Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Phpmailer powoduje fatal error
Rufus_84
post 12.05.2014, 10:42:19
Post #1





Grupa: Zarejestrowani
Postów: 77
Pomógł: 1
Dołączył: 15.12.2012

Ostrzeżenie: (0%)
-----


Witam.
Mam następujący problem.

Uzywam na stronie klasy phpmailer do wysylki maili, jednak powoduje to błąd, ktorego nie potrafię rozwiązać, mianowicie:

strona rezerwacja-krok4:

  1. echo '<body>';
  2.  
  3. ModuleLoader::load("Header");
  4.  
  5. ModuleLoader::load("Menu");
  6.  
  7. ModuleLoader::load("RezerwacjaKrok4");
  8.  
  9. ModuleLoader::load("Promo");
  10.  
  11. AddonLoader::load("KontaktForm");
  12.  
  13. ModuleLoader::load("Footer");
  14.  
  15. echo '</body></html>';


gdzie phpmailer znajduje się w module RezerwacjaKrok4.

Problem polega na tym, że po wysłaniu maila otrzymuje błąd:

Fatal error: Class 'Promo' not found in C:\HTTP\CLASS\ModuleLoader.class.php on line 1528
gdzie normalnie klasa Promo działa bez zarzutu.

włąsciwie to jeśli wyrzucę clasę Promo to wyskakuje ten sam błąd dotyczący clasy AddonLoader czyli powoduje błąd w kazdej klasie ponizej ModuleLoader::load("RezerwacjaKrok4");

Będę wdzięczny za pomoc w rozwiązaniu problemu.

Pozdrawiam

Ten post edytował Rufus_84 12.05.2014, 10:48:56
Go to the top of the page
+Quote Post
Pyton_000
post 13.05.2014, 11:59:47
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Wywal linijką 274 z pliku rezerwacji
Go to the top of the page
+Quote Post
Sephirus
post 13.05.2014, 12:12:26
Post #3





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


@Pyton_000 - jasnowidz co_jest.gif

@Autor Jakiej wersji PHP używasz?

Wygląda na to że phpmailer nadpisuje Ci autoloader klas. Dla wersji 5.3+ wrzuca swój autoloader na początek stosu co skutkuje tym, że może nie wiedzieć jak znaleźć daną klasę z FW. Możliwe też, że zastępuje Ci całkiem autoloader.

Przed zastosowaniem phpmailera radzę zapisać stos autolodera i po jego użyciu przywrócić go. Lub najprościej po użyciu phpmailera odpalić:

  1. spl_autoload_unregister('PHPMailerAutoload');


i zobaczyć czy zacznie działać wink.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
Pyton_000
post 13.05.2014, 12:42:25
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Tak ;P

PHPMailer używa spl_autoload_register, a w aplikacji jest zapewne __autoload co skutkuje zastąpieniem starego autoloadera.

Najprościej jest zmienić nazwę __autoloader na jakąś inną i ją zarejestrować przez ww. register.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 5.07.2025 - 16:45