Autor | Zpráva | ||
---|---|---|---|
marvays Profil |
#1 · Zasláno: 3. 3. 2018, 09:53:39
Dobrý den.
Mám eshop na Joomle a VM3. Koupil jsem rozšíření na tvotbu faktur. Toto rozšíření obsahuje možnost zaslání emailu danému zákazníkovi, kliknutím na odkaz v administraci. V emailu se odešle předdefinovaný text a v příloze vygenerovaná faktura. když jsem toto připravoval na pracovním hostingu, vše šlapalo skvěle. Tento web byl umístěn na wedosu. Když jsem web nahodil na své místo (hosting na Blueboard), vše taky funguje skvěle, jen nejde odesílat email z administrace zákazníkovi. Ale ostatní mailové fukce fungují normálně. Když dorazí nová obejdnávka, z webu mi dorazí info. Firewall mi pravidelně hlásí hlášení a podobně. podle toho, co mi vyskakuje dole v liště (F12) si ymslím, že to bude mít něco společného s ajaxem. /administrator/index.php?option=com_invoices&controller=invoice&task=send_email&cid[]=25&ajax=1&type=1&_=1520066605777 Failed to load resource: the server responded with a status of 500 () Výrobce rozšíření zatím mlčí. Z blueordu se na to dívali (aspoň to tvrdí) a poslali mi sdělení, že: "Dobrý den, emailové funkce jsou na doméně vybaveniprovozu.cz v pořádku. Klidně si zeditujte skript testmail.php ve složce www." Což jsem si zjistil taky, protože na to má joomla svuj nástroj. Netuším, co může být u blueboardu jiného, že to nefunguje. Včera jsem udělal opět zálohu ostrého webu, přesunul na wedos a jede jak hodinky. Jediné,m včem se ty dva hostingy liší je to, že na blueboardu mám zapnutý SSL a je tam jiný .htaccess než mám na wedosu. |
||
Keeehi Profil |
#2 · Zasláno: 3. 3. 2018, 11:52:11
marvays:
„Jediné,m včem se ty dva hostingy liší je to, že na blueboardu mám zapnutý SSL a je tam jiný .htaccess než mám na wedosu.“ Možné z tvého pohledu, ale jsem si celkem jistý, že servery budou mít různé nastavení. Nicméně, pokud to blueboard umožňuje podívej se do error logu. Pokud ne, zapni si vypisování všech hlášek a načti danou url. Některé servery při určitém nastavení vracejí 500 pokud se v PHP objeví chyba. Pokud zapneš vypisování chybových hlášek chyba "nenastane" a vypíše se. Podle toho zjistíš, kde je problém. |
||
marvays Profil |
#3 · Zasláno: 3. 3. 2018, 14:55:17
Keeehi:
„Podle toho zjistíš, kde je problém.“ V administraci Bluebordu jsem nic takového nenašel. Uvidíme, co mi odpoví podpora. |
||
Keeehi Profil |
#4 · Zasláno: 4. 3. 2018, 00:02:35
marvays:
Povolit vypisování chybových hlášek jde i přímo v kódu. Na začátek index.php vlož error_reporting(E_ALL); ini_set('display_errors', 1); |
||
marvays Profil |
GET =25&ajax=1&type=1&_=1520156766602]https://domena.cz/administrator/index.php?option=com_invoices&controller=invoice&task=send_email&cid[]=25&ajax=1&type=1&_=1520156766602 500
send @ jquery.min.js?edecdc…4906a5bc3ee519a64:4 ajax @ jquery.min.js?edecdc…4906a5bc3ee519a64:4 email_invoice @ common.js:219 email @ Invoice.js:104 click @ VM3726:7 invoker @ vue.js:1827 |
||
Keeehi Profil |
#6 · Zasláno: 4. 3. 2018, 13:41:48
Tohle není výpis PHP chyby ale záznam toho, jak se vyvolal ten ajaxový požadavek. Navíc to vypadá, že server stále vrací 500 status. Dal jsi to do souboru index.php co je ve složce administrator?
|
||
marvays Profil |
#7 · Zasláno: 4. 3. 2018, 19:05:18
Keeehi:
Ano. Kde by se to mělo zobrazit? ta chyba |
||
Keeehi Profil |
#8 · Zasláno: 4. 3. 2018, 20:02:18
Přímo v odpovědi toho ajaxového požadavku.
|
||
marvays Profil |
#9 · Zasláno: 4. 3. 2018, 20:11:02
Do index.php v adminsitarci jsem to zapsal takto:
<?php error_reporting(E_ALL); ini_set('display_errors', 1); ale ať se dívám, jak se dívám, nikde žádný výpis nevidím :( |
||
Keeehi Profil |
#10 · Zasláno: 4. 3. 2018, 20:50:02
To, co jsi napsal do [#5] jsi získal kde? Vypadá to jako výpis z nástrojů pro vývojáře co je v prohlížeči. Tam si můžeš zobrazit i obsah odpovědí všech odeslaných požadavků. Tedy i toho ajaxového.
|
||
marvays Profil |
#11 · Zasláno: 4. 3. 2018, 21:44:35
jj to je s těch nástrojů vývojáře
|
||
marvays Profil |
#12 · Zasláno: 5. 3. 2018, 12:13:53
Takže jsem zjistil další info. Když v komponentě zruším volbu, aby k emailu připojil fakturu v PDF, tak emaily začnou chodit. Jakmlie je nestaveno, že k emailu má být připojena pdf faktura, skript se nedokončí a email neodejde. Wedosu to nevadí, blueboardu ano. nechápu
|
||
Tomášeek Profil |
#13 · Zasláno: 5. 3. 2018, 12:54:08
marvays:
Teď na tobě bude si buď najít někoho, kdo zná Joomlu (nebo umí programovat, aby ti to oddebugoval), nebo si to oddebugovat sám. Není tu ani kousek kódu, se kterým by se dalo pracovat, celý mail modul sem dávat nebudeš. |
||
marvays Profil |
#14 · Zasláno: 5. 3. 2018, 13:59:57
Tomášeek:
Prozatím se to snažím řešit přes hosting. vycházím z toho, že na jednom to jde a na druhém ne. netuším, jak dalece je to chyba autora komponenty a hostingu. |
||
Tomášeek Profil |
#15 · Zasláno: 5. 3. 2018, 14:24:50
marvays:
Hosting ti dle mého sdělí, jaké má nastavení, ale určitě ti to nebude oddebugovávat, ani srovnávat s nastavením na jiném hostingu. Víš, že problém je někde v tom mailovém scriptu, dokonce v místě, kde se pracuje s přílohou, což je docela dobře lokalizované. Než se dohadovat s podporou, což IMHO k výsledku nepovede, zkusil bych do toho kódu rozestavět pár breakpointů a opravit svépomocí. Měla by to být otázka relativní chvilky (řekněme hodinka, dvě max), to komunikací s podporou ztratíš násobně více času. |
||
marvays Profil |
Tomášeek:
Chápu. Pro mě je to španělská vesnice. Musím někoho najít. Tady ještě kousek kodu, který se týká odesílání. Možná je chyba ukraty někde tam: function sendMail(){ $data = $this->getData(); $params = JComponentHelper::getParams( 'com_invoices' ); $from = $params->get('email_email') ; $from_name = $params->get('email_name') ; $subject = $params->get('email_subject') ; if($data->type == 2){//quote $subject = $params->get('email_subject_quote') ; } $subject = str_replace("{invoice_num}", $data->invoice_num, $subject) ; $view = $this->getInvoiceView(); $view->invoice = $data; $view->template = $this->getTemplate(); $view->items = $this->getItems(); $view->taxes = $this->getTaxes(); $view->payments = $this->getPayments(); $view->payments2 = $this->getPayments2(); $view->params = $params; if($view->template->content_email) $view->template->content = $view->template->content_email ; $view->_path['template'][1] = JPATH_SITE.DS.'components'.DS.'com_invoices'.DS.'views'.DS.'invoice'.DS.'tmpl' ; $plantilla = 'email' ; $message = $view->loadTemplate( $plantilla ); $styles = "<style>".$view->template->styles."</style>" ; $message = $styles . $message ; $to = $data->to_email; $toBlock = str_replace(" ", "", $to); //Delete spaces between emails $toMails = explode(",", $toBlock); $mail = JFactory::getMailer(); $mail->addRecipient($toMails); $mail->setsender(array($from, $from_name)); $mail->setSubject($subject); $mail->setbody($message); $mail->isHTML(true); if($params->get('pdfemail') && InvoicesHelper::PDFavailable()){ //create PDF $viewpdf = $this->getInvoiceView('dompdf'); $viewpdf->invoice = $view->invoice ; $viewpdf->template = $this->getTemplate(); $viewpdf->items = $view->items ; $viewpdf->taxes = $view->taxes ; $viewpdf->payments = $view->payments; $viewpdf->payments2 = $view->payments2; $viewpdf->params = $params; if($viewpdf->template->content_pdf) $viewpdf->template->content = $viewpdf->template->content_pdf ; $viewpdf->_path['template'][1] = JPATH_SITE.DS.'components'.DS.'com_invoices'.DS.'views'.DS.'invoice'.DS.'tmpl' ; if($viewpdf->invoice->invoice_num) $pdfname = $viewpdf->invoice->invoice_num; else $pdfname = rand(); $location = JPATH_SITE.DS.$params->get('pdffolder','pdfinvoices').DS.$pdfname . ".pdf" ; $pdf = $viewpdf->storepdf($location); if($pdf) $mail->addAttachment($location, $viewpdf->invoice->invoice_num . ".pdf") ; } $sent = $mail->Send(); if($sent && $to){ InvoicesHelper::updateSentDate($data->id); //trigger event $import = JPluginHelper::importPlugin( 'invoices' ); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger( 'onAfterSendInvoice', array( $data ) ); } return $sent ; } Navíc na wedosu, když vygeneruju fakturu, tak se mi uloží do předdefinované složky /pdfinvoices ve formátu 2018-cz00016.pdf Na blueboardu umím fakturu editovat, umím ji zobrazit a stáhnout v pdf. Ale do dané složky se neuloží. Neuloží se ani nikde jinde. Jen v kořenovém adresáři na hostingu se volně povalují soubory bez koncovky s názem typu ca_dompdf_img_CV3eQO . . . . . .. dompdf je plugin, který generuje ty faktury. Takže to vypadá, že nelze vygenerovat a zapsat fakturu, přičemž při odesílání se to zastaví na tom, že ji hledáv dané složce a nenachází . . . . proto po čase naskočí 500. |
||
Keeehi Profil |
#17 · Zasláno: 5. 3. 2018, 15:53:49
V tom případě bych se podíval na práva k čtení, zápisu a tvorbě souborů a složek.
Nicméně, debugovat script bez zahnutých chybových hlášení je téměř nemožné. Ne že by to bylo nemožné, ale zabere to násobně více času a vyžaduje to spoustu zkušeností. Může se stát, že opravu chyby náhodou naslepo trefíš, ale je to loterie. Proto by jsi měl nejdříve zprovoznit ten výpis chyb, než se posuneš dále. |
||
marvays Profil |
#18 · Zasláno: 5. 3. 2018, 15:59:08
Keeehi:
„Proto by jsi měl nejdříve zprovoznit ten výpis chyb, než se posuneš dále.“ O to se snažím. Nevím, co dělám špatně, že to nefunguje :( Nahrál jsem ten kod do třech různých index.php (hlavní v joomle, hlavní v administraci a do indexu v šabloně administrace) ale chyby mi to nikde nevypisuje. |
||
Keeehi Profil |
#19 · Zasláno: 5. 3. 2018, 17:00:19
![]() |
||
marvays Profil |
#20 · Zasláno: 5. 3. 2018, 17:53:29
Omlouvám se, asi jsem na to větší trotl, než jsem myslel. Žádnou chybovou hlášku mi to nezobrazuje.
|
||
Keeehi Profil |
marvays:
O tom to není, je to jen zkušenostmi. Pokud to děláš poprvé, tak se není čemu divit. Všichni jsme někdy začínali. Co vidíš? |
||
Davex Profil |
#22 · Zasláno: 6. 3. 2018, 00:03:38
marvays:
„Žádnou chybovou hlášku mi to nezobrazuje.“ Tipuji, že si to nastavení Joomla přenastaví a výpis chyb zase vypne. Obsah konfiguračního souboru Joomly tomu nasvědčuje. Nejlepší by bylo, nechat si na webserveru zapnout logování chyb PHP do souboru ( error_log , log_errors ). Změna nastavení na začátku PHP skriptu, např. pomocí ini_set() , může být už pozdě.
|
||
Časová prodleva: 7 let
|
0