Temas etiquetados como: ‘PHP’

Restaurar un Mysql Backup con php

5 Septiembre, 2009

Escribo un post rápido sobre algo tan sencillo que ni se me había pasado por la cabeza, acostumbrado al acceso shell y el uso de mysqldump. Hace poco un amigo me comentaba el problema que tuvo al subir a un servidor un sql porque no tenía acceso shell para hacer mysqldump y tuvo que dividir el sql en varias partes para su uso en PhpMyAdmin…

Pero hay una solución más sencilla y mucho más rapida, que podemos encontrar en el blog de Daniel15

<?php
/*
 * Restore MySQL dump using PHP
 * (c) 2006 Daniel15
 * Last Update: 9th December 2006
 * Version: 0.2
 * Edited: Cleaned up the code a bit.
 *
 * Please feel free to use any part of this, but please give me some credit :-)
 */

// Name of the file
$filename = 'test.sql';
// MySQL host
$mysql_host = 'localhost';
// MySQL username
$mysql_username = 'root';
// MySQL password
$mysql_password = '';
// Database name
$mysql_database = 'test';

//////////////////////////////////////////////////////////////////////////////////////////////

// Connect to MySQL server
mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to MySQL server: ' . mysql_error());
// Select database
mysql_select_db($mysql_database) or die('Error selecting MySQL database: ' . mysql_error());

// Temporary variable, used to store current query
$templine = '';
// Read in entire file
$lines = file($filename);
// Loop through each line
foreach ($lines as $line)
{
	// Skip it if it's a comment
	if (substr($line, 0, 2) == '--' || $line == '')
		continue;

	// Add this line to the current segment
	$templine .= $line;
	// If it has a semicolon at the end, it's the end of the query
	if (substr(trim($line), -1, 1) == ';')
	{
		// Perform the query
		mysql_query($templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
		// Reset temp variable to empty
		$templine = '';
	}
}

?>

Soporte Unicode en CentOS 5.2 con PHP y PCRE

19 Mayo, 2009

No hace mucho me encontré con un problema en un servidor nuevo de la empresa (un CentOS con Plesk), tras instalar el framework Kohana y probar el test de compatibilidad que trae este framework me avisaba de que podría no funcionar bien ya que no tenía en mi servidor soporte unicode en el PCRE, para probar si nuestro PCRE tiene soporte unicode tan sólo tenemos que poner via linea de comandos:

$ pcretest -C
PCRE version 6.6 06-Feb-2006
Compiled with
  UTF-8 support
  No Unicode properties support
  Newline character is LF
  Internal link size = 2
  POSIX malloc threshold = 10
  Default match limit = 10000000
  Default recursion depth limit = 10000000
  Match recursion uses stack

Si a ti también te aparece “No Unicode properties support” al ejecutar pcre sigue leyendo :) sino te recomiendo que visites mi web de música electrónica xD

Solucionar el problema

Antes de nada comentarte que no debes usar el usuario “root” para esto, por lo que deberíamos usar un usuario normal.

Bueno una vez estamos conectados con un usuario “normal” debemos crear los siguientes directorios en la carpeta por defecto de tu usuario ej. /home/miusuario …

$ mkdir -p ~/src/rpm
$ cd ~/src/rpm
$ mkdir BUILD RPMS SOURCES SPECS SRPMS
$ mkdir RPMS/i[3456]86 RPMS/noarch RPMS/athlon

Una vez hecho esto creamos el archivo ~/.rpmmacros y escribimos lo siguiente:
# Path to top of build area
%_topdir /home/miusuario/src/rpm

A continuación nos descargamos este archivo(Recuerda que yo estoy actualizando CentOS 5.2 con PCRE 6.6) en la carpeta de nuestro usuario y ponemos:

$ rpm -ivh pcre-6.6-2.el5_1.7.src.rpm

Esto pondrá los archivos necesarios en las carpetas creadas anteriormente para poder recompilar de nuevo PCRE con soporte Unicode.
Ahora abrimos con nano (o vi eso a gusto de cada uno) el archivo

~/src/rpm/SPECS/pcre.spec

Buscamos …
%configure –enable-utf8

Una vez encontrada le añadimos lo siguiente y guardamos el archivo
%configure –enable-utf8 –enable-unicode-properties

Bueno ya tenemos todo listo para recompilar PCRE con soporte Unicode ahora tan sólo tenemos que ejecutar lo siguiente

$ rpmbuild -ba ~/src/rpm/SPECS/pcre.spec

Esto nos mostrará algo parecido a esto:

Escrito: /home/miusuario/src/rpm/SRPMS/pcre-6.6-2.7.src.rpm
Escrito: /home/miusuario/src/rpm/RPMS/i386/pcre-6.6-2.7.i386.rpm
Escrito: /home/miusuario/src/rpm/RPMS/i386/pcre-devel-6.6-2.7.i386.rpm
Escrito: /home/miusuario/src/rpm/RPMS/i386/pcre-debuginfo-6.6-2.7.i386.rpm

Ahora sí debemos cambiar a root para poder instalar el nuevo rpm:

$ rpm -Uvh /home/miusuario/src/rpm/RPMS/i386/pcre-6.6-2.7.i386.rpm

Reiniciamos apache :)   listo! problema resuelto :)

Para este pequeño tutorial me he basado en los manuales Unicode Support on CentOS 5.2 with PHP and PCRE y How to patch and rebuild an RPM package