Portál AbcLinuxu, 13. května 2025 20:59
Ahoj,
mám nainstalovaný RoundCube verze 0.3.1, povolil jsem plugin Password. Vlezl jsem do /plugins/password/config.inc.php.dist, které jsem zkopíroval na config.inc.php, kde jsem nastavil toto:
$rcmail_config['password_driver'] = 'sql';
$rcmail_config['password_db_dsn'] = 'mysql://rc-user:rcheslo@127.0.0.1/mail';
$rcmail_config['password_query'] = 'UPDATE `mail`.`users` SET `password` = ENCRYPT(%p) WHERE CONVERT(`users`.`email` USING utf8) = %u LIMIT 1;';
Pak přejdu do Osobního nastavení a záložku Heslo. Zde zadám aktuální heslo, 2x nové heslo, potvrdím a pak mám jen bílou stránku bez ničeho, přičemž ve zdrojovém kódu jsou data. Heslo se nezmění, zůstanepouze to staré, do error ani sql logu roundcube se mi nic nezapíše (hodnota nastavena na trac. Zkoušel jsem nějaké kombinace, ale nic, co by mi fungovalo. Předpokládám, že problém bude ve spojení s databází nebo v samotném MySQL dotazu. Kde může být problém?
Řešení dotazu:
Tak už vím, kde je přesně chyba, ale nevím, jak to upravit. Chyba je na níže uvedeném řádku. Jde o to, že jméno databáze má ve jméně pomlčku, jako SQL dotaz mohu dát databázi do zpětných apostrofů, apostrofů. Nyní to ovšem nejde ani escapovat zpětným lomítkem:
$rcmail_config['password_db_dsn'] = 'mysql://rc-user:rcheslo@127.0.0.1/data-base';
Omlouvám, neuvědomil jsem si to v tom nadšení. V tomto problém nebyl, byť jsem tak usoudil z toho, že mi interní logovací služba RoundCube psala do logu, že se nemůže dostat do zmíněné databáze. První část problému vyřešila úprava oprávnění na "ALL Privilegies" a poté jsem si nechal logovat SQL dotazy, což byl také zázrak. Dotaz provedený na MySQL z RoundCube byl správný, když jsem ho vložil přes phpMyAdmina, tak prošel, ale RC mi hlásilo, že heslo nejde uložit. Musel jsem odstranit kontrolu starého hesla a poté už dotaz proběhl i skrz RoundCube.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.