installazione di roundcube.
ambiente:
lighttpd
sqlite (2), il (3) attualmente non e’ supportato.
php5-cgi installazione standard debian.
problema 1:
durante l’installazione roundcube verra’ richiesto se affidare il lavoro a db-config di debian: io rispondo sempre NO.
problema 2:
una volta individuato il posto dove piazzare il db di sqlite provvedete a rendere scrivibile da tutti la dir, almeno a utente www-data (che e’ l’utente di lighttpd).
scaricate da roundcube un pacchetto vergine di installazione di roundcube perche’ servira’ il file SQL/sqlite.initial.db che non ho trovato nell’installazione standard di roundcube.
inizializzate il db con sqlite -init “dove lo avete messo”/SQL/sqlite.initial.sql “/posizione del db/nome del file che avete intenzione di creare”.
provvedete a utenti e diritti per lo stesso discorso di cui sopra.
problema 3:
configurate il tutto (server smtp, pop e quant’altro).
ultimo dettaglio, di primo acchitto vi ritroverete davanti a un roundcube che dopo pochi istanti dal login vi sbattera’ fuori.
nei log troverete a ripetizione questo errore:
PHP Deprecated: Assigning the return value of new by reference is deprecated in /usr/share/php/MDB2.php on line 2647
poco male, non inficia, almeno per il momento, pero’, ho scoperto che roundcube va in conflitto con suhosin che ovviamente viene installato di default.
come da ricerchina veloce sul web, ho aggiornato mdb2 (per upgrade mdb2).
problema 4:
se abbiamo un’altra installazione roundcube e’ logico pensare di esportare il db e importarlo nella nuova. anche qui c’e’ un problema, semplice, ma rognoso: nel db, ci sono diverse tavole (contacts,event, messages,identities) tutte legate alla tabella users attraverso la join su users.user_id. Ogni volta che un utente si collega, se esiste in users si va avanti, altrimenti viene creato un nuovo record. Importando la tabella saltano totalmente gli id tra users e le altre tabelle in quanto sulla nuova installazione gli utenti vengono ricreati mano a mano che si collegano. Per risolvere basta risistemare gli id nelle quattro tabelle, in base alle nuove connessioni. Probabilmente ci sara’ un sistema meno incasinato, ma per il momento va bene cosi’.
altro problema relativo a un piccolo baco nella gestione dell’imap:
PHP Warning: strtolower() expects parameter 1 to be string, array given in /…/roundcube/program/include/rcube_imap.php on line 1285
(http://trac.roundcube.net/ticket/1486284) corretto seguendo sempre le indicazioni sul trac di roundcube (http://trac.roundcube.net/changeset/3176):
net131 (131):/usr/share/roundcube/program/include# diff rcube_imap.php rcube_imap.php.originale
1285,1290c1285,1287
< //if (strtolower($part[$i][0]) == 'message' ||
< // (in_array('name', (array)$part[$i][2]) && (empty($part[$i][3]) || $part[$i][3]=='NIL'))) {
< // fetch message headers if message/rfc822 or named part (could contain Content-Location header)
< if (!is_array($part[$i][0]) && (strtolower($part[$i][0]) == 'message' ||
< (in_array('name', (array)$part[$i][2]) && (empty($part[$i][3]) || $part[$i][3]=='NIL')))) {
< $part_headers[] = $struct->mime_id ? $struct->mime_id.'.'.($i+1) : $i+1;
---
> if (strtolower($part[$i][0]) == 'message' ||
> (in_array('name', (array)$part[$i][2]) && (empty($part[$i][3]) || $part[$i][3]=='NIL'))) {
> $part_headers[] = $struct->mime_id ? $struct->mime_id.'.'.($i+1) : $i+1;