Zápisník pojídačky koláčů pro Xoops - Problém s poštovním systémem XOOPSu
Před pár dny mi psal jeden člověk, že má problém s registrací, protože redakční systém říká, že se nedaří odeslat potvrzovací email. Tak jsem mu dokončila registraci ručně a problém si ověřila. Bohužel to byla pravda, ale netušila jsem, jak to vyřešit. Pár dní jsem měla jinou práci, ale dneska na to došlo. Dostala jsem prostě takovou „programovací“ náladu, ačkoli tu mám i jinou práci. Hlavně okolo pračky a žehličky
Žirafoviny používají XOOPS 2.4.5 což je již hodně fousatá verze. Tušila jsem, že to může být trochu problém, a začala bádat. A vybádala jsem, že jeden z problémů je použití PHP funkce eregi, která je najednou fuj a má se nahradit funkcí novou, a totiž preg_match. Která je lepší, krémovější a já nevím co ještě. Ale hlavně používá trochu jinou syntaxi, což mi také chvilku trvalo. Nové funkce toho umí více a lepší určitě jsou, ale stejně si myslím, že i staré funkce mohly v klidu zůstat vedle těch nových.
Chyba se ukázala být v souboru XOOPSROOT/class/mail/phpmailer/class.phpmailer.php. Funkce eregi je tam jen jedna jediná a tak se dá řádek snadno najít.
Je třeba najít tuto část:
a nahradit ji tímto:
Celý blok pak bude vypadat takto:
Tím mi zmizela hláška o zastaralé funkci, ale stejně posílání emailů nefungovalo. Systém stále hlásil chybu na serveru. To mne dosti štvalo, ale nevěděla jsem, kde je chyba. Ten zápis mohl být také špatně a tak bylo potřeba zjistit, kde je chyba. Jeden známý mi ověřil, že to je napsané dobře, takže zbývalo hledat dále.
V dalším kroku jsem si do toho skripu napsala nějaké „informační výstupy“ a tím jsem zjistila, že parametry jsou v pořádku a, hlavně, že se v té části nekontroluje adresa, ale získává se adresa serveru a jeho port. Sláva. Tak jsem vložené řádky zase smazala a říkala jsem si, jaká jsem trubka, protože mi došlo, kde je ta hlavní chyba.
Věřte či ne, ale byla ve špatně zadaném heslu k SMTP serveru. Před pár týdny jsem jej měnila a na Žirafoviny jsem úplně zapomněla, takže tak. Tohle si budu pamatovat ještě dlouho.
Takže pokud máte podobný problém, zkuste se nejprve podívat na hesla a pak se teprve vrtat v souborech systému. Věřím, že moje anabáze někomu pomůže. A když ne, tak se alespoň pár lidí může pobavit
PS: Nejvíce mi pomohla tato stránka http://www.seitler.cz/jak-v-php-nahra ... rale-funkce-ereg-a-eregi/ a pak pan P.T. kterému tímto moc děkuji
Žirafoviny používají XOOPS 2.4.5 což je již hodně fousatá verze. Tušila jsem, že to může být trochu problém, a začala bádat. A vybádala jsem, že jeden z problémů je použití PHP funkce eregi, která je najednou fuj a má se nahradit funkcí novou, a totiž preg_match. Která je lepší, krémovější a já nevím co ještě. Ale hlavně používá trochu jinou syntaxi, což mi také chvilku trvalo. Nové funkce toho umí více a lepší určitě jsou, ale stejně si myslím, že i staré funkce mohly v klidu zůstat vedle těch nových.
Chyba se ukázala být v souboru XOOPSROOT/class/mail/phpmailer/class.phpmailer.php. Funkce eregi je tam jen jedna jediná a tak se dá řádek snadno najít.
Je třeba najít tuto část:
if(eregi('^(.+):([0-9]+)$', $hosts[$index], $hostinfo))
a nahradit ji tímto:
if(preg_match('/^(.+):([0-9]+)$/i', $hosts[$index], $hostinfo))
Celý blok pak bude vypadat takto:
if(preg_match('/^(.+):([0-9]+)$/i', $hosts[$index], $hostinfo)) {
$host = $hostinfo[1];
$port = $hostinfo[2];
} else {
$host = $hosts[$index];
$port = $this->Port;
}
Tím mi zmizela hláška o zastaralé funkci, ale stejně posílání emailů nefungovalo. Systém stále hlásil chybu na serveru. To mne dosti štvalo, ale nevěděla jsem, kde je chyba. Ten zápis mohl být také špatně a tak bylo potřeba zjistit, kde je chyba. Jeden známý mi ověřil, že to je napsané dobře, takže zbývalo hledat dále.
V dalším kroku jsem si do toho skripu napsala nějaké „informační výstupy“ a tím jsem zjistila, že parametry jsou v pořádku a, hlavně, že se v té části nekontroluje adresa, ale získává se adresa serveru a jeho port. Sláva. Tak jsem vložené řádky zase smazala a říkala jsem si, jaká jsem trubka, protože mi došlo, kde je ta hlavní chyba.
Věřte či ne, ale byla ve špatně zadaném heslu k SMTP serveru. Před pár týdny jsem jej měnila a na Žirafoviny jsem úplně zapomněla, takže tak. Tohle si budu pamatovat ještě dlouho.
Takže pokud máte podobný problém, zkuste se nejprve podívat na hesla a pak se teprve vrtat v souborech systému. Věřím, že moje anabáze někomu pomůže. A když ne, tak se alespoň pár lidí může pobavit
PS: Nejvíce mi pomohla tato stránka http://www.seitler.cz/jak-v-php-nahra ... rale-funkce-ereg-a-eregi/ a pak pan P.T. kterému tímto moc děkuji
Hodnocení: 0,00 (0 hlasů) - Ohodnotit -
Komentář je vlastnictvím svého autora. Vyjadřuje jeho názory, ne názory redakce nebo provozovatele webu či serveru.
Napsal/a | Vlákno |
---|