Archivio mensile:Febbraio 2013

Migrare WordPress su nuovo dominio

Wordpress logo

Migrare un sito in WordPress da un dominio ad un altro potrebbe apparire un’operazione semplice ma in realtà le cose sono complesse. WordPress memorizza in diversi punti nel database alcuni parametri associati al dominio stesso o al percorso locale in cui WP stesso è installato. Tutti questi riferimenti risultano spesso annidati in array serializzati e memorizzati in campi di database. Un’eventuale modifica “a mano” via phpMyAdmin quindi risulterebbe abbastanza scomoda e assai lunga.

Allora ho creato uno script (parser_WP.php) in PHP che modifica ogni riferimento presente nel database in modo da agevolare le operazioni.

Ricapitolando quindi, per migrare un sito WordPress su un dominio diverso, dovete:

  1. Copiare tutti i file e cartelle da un server ad un altro (via FTP, a partire dalla root)
  2. Creare un dump del database
  3. Creare un database vuoto sul nuovo dominio
  4. Importare il dump precedentemente creato
  5. Copiare lo script di cui sopra nella root del nuovo dominio e lanciarlo via browser (dopo aver configurato i dati di accesso al database)

Le modifiche da apportare al database sono di 2 tipi: sul dominio e sul path.
Aprendo lo script noterete che nelle prime righe vi sono 2 variabili da impostare:

$lookFor = "domain-1.com";
$replace = "domain-2.com";

Sostituite domain-1 con il nome del vecchio dominio e domain-2 col nome del nuovo dominio.

WordPress però, come dicevamo, memorizza anche il path assoluto in cui è installato. Dovrete quindi lanciare nuovamente lo script sostituendo le 2 variabili con i path: vecchio e nuovo. Ad esempio:

$lookFor = "/home/myOLDuser/";
$replace = "/home/myNEWuser";

Lanciate nuovamente il file. In questo secondo caso il risultato restituito (lo script restituisce il numero di valori modificati) sarà molto basso rispetto al primo (anche se questo varia a seconda dei plugin, widget, ecc. installati).

Fatto, ricordatevi di rimuovere lo script php dalla root!!

PHP: Nascondere errori “DEPRECATED” via .htaccess

logo-PHP

Sto installando un’applicazione in ambiente di prova, giusto per guardamela un po’ e per approfondire un po’ le funzionalità implementate. Peccato che l’applicativo in oggetto su PHP 5.3 genera una marea di errori di “DEPRECATED” dovuti alla funzione eregi ormai dichiarata obsoleta dal PHP 5.3 in avanti. Per velocizzare il tutto ho pensato di non visualizzare tali errori.

Le alternative sono diverse ma preferisco sempre aggiungere l’impostazione tramite file .htaccess in modo da “non sporcare” il codice sorgente. Ho quindi aggiunto un file .htaccess nella root del progetto aggiungendo questa riga:

php_value error_reporting 22527

Il livello 22527 corrisponde a  “E_ALL & ~E_DEPRECATED“, appunto tutti gli errori tranne i deprecated. Nel file .htaccess non è possibile inserire il testo, si può solo configurare tramite bitmask corrispondente calcolata sulla base delle costanti predefinite per error_reporting.

Se non siete ferrati sull’argomento bitwise operators o non avete voglia e tempo potete rapidamente calcolarvelo tramite queste 2 righe in PHP, la prima imposta il valore che desiderate (utilizzando le costanti e gli operatori bitwise) la seconda stampa a video la bitmask corrispondente (un numero intero) che poi potrete utilizzare per configurare il tutto tramite file .htaccess:

error_reporting( E_ALL & ~E_DEPRECATED );
echo error_reporting(); die;