Archivo paraJunio, 2007

Errores con PEAR en Horde de Plesk 8.1 en un Dedicated Server de GoDaddy con Windows Server 2003

El problema es que Plesk 8 utiliza una version personalizada de Horde con una version del paquete DB de PEAR obsoleta. Esto causa errores de este tipo:

PHP Fatal error: Cannot use object of type DB_sqlite as array in C:\Inetpub\vhosts\webmail\horde\lib\Horde\DataT
ree.php on line 656
 
PHP Fatal error: Cannot use object of type DB_mysql as array in /usr/share/psa-horde/lib/Horde/DataTree.php on line 657

Bueno la solucion rápida y mas lógica es actualizar el paquete DB de PEAR para que sea compatible con la version de PHP 5, aunque se puede realizar solo con el comando: pear upgrade DB, esto me llego a causar una serie de problemas que les voy a postear aqui (aunque me voy a enfocar a Plesk 8.1 para Windows y Horde utilizando sqlite, el problema se resuelve de una forma muy similar en Linux con Horde para MySQL, al final viene una referencia para Linux):

Primero que nada intenté el comando que comento en el parrafo pasado, y obtengo este resultado:

C:\Inetpub\vhosts\webmail\horde\pear>pear upgrade DB
downloading DB-1.7.11.tgz ...
Starting to download DB-1.7.11.tgz (132,064 bytes)
.............................done: 132,064 bytes
requires package `PEAR' >= 1.0b1
DB: Dependencies failed
 
C:\Inetpub\vhosts\webmail\horde\pear>pear upgrade DB
downloading DB-1.7.11.tgz ...
Starting to download DB-1.7.11.tgz (132,064 bytes)
.............................done: 132,064 bytes
requires package `PEAR' >= 1.0b1
DB: Dependencies failed

El primer problema es una dependencia al paquete PEAR, por lo que por lógica opto por actualizar tambien PEAR asi:

C:\Inetpub\vhosts\webmail\horde\pear>pear upgrade PEAR
downloading PEAR-1.6.0.tgz ...
Starting to download PEAR-1.6.0.tgz (296,465 bytes)
.........................done: 296,465 bytes
requires package `PEAR' >= 1.3.3
requires package `Archive_Tar' >= 1.3.1
requires package `Console_Getopt' >= 1.2
requires package `Structures_Graph' >= 1.0.2
PEAR: Dependencies failed

Más dependencias, intentamos actualizarlas

C:\Inetpub\vhosts\webmail\horde\pear>pear upgrade Archive_Tar
downloading Archive_Tar-1.3.2.tgz ...
Starting to download Archive_Tar-1.3.2.tgz (17,150 bytes)
......done: 17,150 bytes
upgrade ok: Archive_Tar 1.3.2

Todo parece estar bien, continuamos con la otra dependencia

C:\Inetpub\vhosts\webmail\horde\pear>pear upgrade Console_Getopt
downloading Console_Getopt-1.2.3.tgz ...
Starting to download Console_Getopt-1.2.3.tgz (4,011 bytes)
....done: 4,011 bytes
No handlers for package.xml version 2.0

Del sitio web de PEAR
(Febrero 1, 2007) A partir del 1 de Enero de 2008, PEAR va a dejar de soportar versiones de PEAR menores o iguales a la 1.3.6, por lo que se recomienda que se actualize utilizando estos comandos:

pear upgrade --force PEAR-1.3.6 Archive_Tar-1.3.1 Console_Getopt-1.2
pear upgrade --force PEAR-1.4.11
pear upgrade PEAR

Entonces empezamos con el primer comando

C:\Inetpub\vhosts\webmail\horde\pear>pear upgrade --force PEAR-1.3.6 Archive_Tar
-1.3.1 Console_Getopt-1.2
downloading PEAR-1.3.6.tgz ...
Starting to download PEAR-1.3.6.tgz (106,880 bytes)
.........................done: 106,880 bytes
downloading Archive_Tar-1.3.1.tgz ...
Starting to download Archive_Tar-1.3.1.tgz (15,102 bytes)
...done: 15,102 bytes
downloading Console_Getopt-1.2.tgz ...
Starting to download Console_Getopt-1.2.tgz (3,370 bytes)
...done: 3,370 bytes
upgrade ok: Console_Getopt 1.2
upgrade ok: Archive_Tar 1.3.1
requires package `XML_RPC' >= 1.4.0
PEAR: Dependencies failed

Nos topamos con otra dependencia, la actualizamos

C:\Inetpub\vhosts\webmail\horde\pear>pear upgrade XML_RPC
downloading XML_RPC-1.5.1.tgz ...
Starting to download XML_RPC-1.5.1.tgz (32,215 bytes)
.........done: 32,215 bytes
upgrade ok: XML_RPC 1.5.1

Intentamos otra vez el primer comando

C:\Inetpub\vhosts\webmail\horde\pear>pear upgrade --force PEAR-1.3.6 Archive_Tar
-1.3.1 Console_Getopt-1.2
downloading PEAR-1.3.6.tgz ...
Starting to download PEAR-1.3.6.tgz (106,880 bytes)
.....................done: 106,880 bytes
downloading Archive_Tar-1.3.1.tgz ...
Starting to download Archive_Tar-1.3.1.tgz (15,102 bytes)
...done: 15,102 bytes
downloading Console_Getopt-1.2.tgz ...
Starting to download Console_Getopt-1.2.tgz (3,370 bytes)
...done: 3,370 bytes
upgrade ok: Console_Getopt 1.2
upgrade ok: Archive_Tar 1.3.1
Optional dependencies:
'xmlrpc' PHP extension is recommended to utilize some features
upgrade ok: PEAR 1.3.6

Parece que todo salió bien, ahora vamos con el segundo comando.

C:\Inetpub\vhosts\webmail\horde\pear>pear upgrade --force PEAR-1.4.11
downloading PEAR-1.4.11.tgz ...
Starting to download PEAR-1.4.11.tgz (283,272 bytes)
...................done: 283,272 bytes
Optional dependencies:
package `PEAR_Frontend_Web' version >= 0.5.0 is recommended to utilize some feat
ures.
package `PEAR_Frontend_Gtk' version >= 0.4.0 is recommended to utilize some feat
ures.
package `PEAR_Frontend_Gtk2' version >= 0.1.0 is recommended to utilize some fea
tures.
upgrade ok: PEAR 1.4.11

Ok, ahora el tercero y último.

C:\Inetpub\vhosts\webmail\horde\pear>pear upgrade PEAR
downloading PEAR-1.6.0.tgz ...
Starting to download PEAR-1.6.0.tgz (296,465 bytes)
.............................................................done: 296,465 bytes
 
requires package `Structures_Graph' >= 1.0.2
PEAR: Dependencies failed

Necesitamos una dependencia mas

C:\Inetpub\vhosts\webmail\horde\pear>pear upgrade Structures_Graph
downloading Structures_Graph-1.0.2.tgz ...
Starting to download Structures_Graph-1.0.2.tgz (30,947 bytes)
.........done: 30,947 bytes
upgrade ok: Structures_Graph 1.0.2

Reintentamos el último comando recomendado en el sitio web de PEAR

C:\Inetpub\vhosts\webmail\horde\pear>pear upgrade PEAR
downloading PEAR-1.6.0.tgz ...
Starting to download PEAR-1.6.0.tgz (296,465 bytes)
.............................................................done: 296,465 bytes
 
Optional dependencies:
package `PEAR_Frontend_Web' version >= 0.5.0 is recommended to utilize some feat
ures.
package `PEAR_Frontend_Gtk' version >= 0.4.0 is recommended to utilize some feat
ures.
upgrade ok: PEAR 1.6.0

Ahora que ya actualizamos PEAR, intentamos actualizar el paquete DB otra vez

C:\Inetpub\vhosts\webmail\horde\pear>pear upgrade DB
downloading DB-1.7.11.tgz ...
Starting to download DB-1.7.11.tgz (132,064 bytes)
.............................done:
upgrade ok: DB-1.7.11

Ahora, en Windows, al utilizar el comando pear, estamos actualizando el pear que esta en:

C:\Program Files\SWsoft\Plesk\Aditional\PleskPHP5\PEAR

Pero nosotros necesitamos actualizar el pear que utiliza el webmail, lo único que hay que hacer, es copiarlo al directorio virtual del webmail o en donde se encuentre el horde.

Copiamos los archivos del folder

C:\Program Files\SWsoft\Plesk\Aditional\PleskPHP5\PEAR

a

C:\Inetpub\vhosts\webmail\horde\pear\PEAR

Despues copiamos el folder

C:\Inetpub\vhosts\webmail\horde\pear\PEAR\DB

a

C:\Inetpub\vhosts\webmail\horde\pear\DB

por ultimo, copiamos los archivos

C:\Inetpub\vhosts\webmail\horde\pear\PEAR\DB.php
C:\Inetpub\vhosts\webmail\horde\pear\PEAR\PEAR.php
C:\Inetpub\vhosts\webmail\horde\pear\PEAR\pearcmd.php
C:\Inetpub\vhosts\webmail\horde\pear\PEAR\System.php

a

C:\Inetpub\vhosts\webmail\horde\pear\DB.php
C:\Inetpub\vhosts\webmail\horde\pear\PEAR.php
C:\Inetpub\vhosts\webmail\horde\pear\pearcmd.php
C:\Inetpub\vhosts\webmail\horde\pear\System.php

Esto nos arregla el error del paquete de la DB en Horde, pero nos deja con un error mas al tratar de entrar al webmail

Warning: include_once(PEAR.php) [function.include-once]: failed to open stream: No such file or directory in C:\Inetpub\vhosts\webmail\horde\lib\core.php on line 45
 
Warning: include_once() [function.include]: Failed opening 'PEAR.php' for inclusion (include_path='C:\Inetpub\vhosts\webmail\horde\lib
;.;./includes;./pear') in C:\Inetpub\vhosts\webmail\horde\lib\core.php on line 45
 
Warning: include_once(Log.php) [function.include-once]: failed to open stream: No such file or directory in C:\Inetpub\vhosts\webmail\horde\lib\Horde.php on line 3
 
Warning: include_once() [function.include]: Failed opening 'Log.php' for inclusion (include_path='C:\Inetpub\vhosts\webmail\horde\lib
;.;./includes;./pear') in C:\Inetpub\vhosts\webmail\horde\lib\Horde.php on line 3
 
Warning: DataTree_sql::require_once(DB.php) [function.DataTree-sql-require-once]: failed to open stream: No such file or directory in C:\Inetpub\vhosts\webmail\horde\lib\Horde\DataTree
\sql.php on line 1620
 
Fatal error: DataTree_sql::require_once() [function.require]: Failed opening required 'DB.php' (include_path='C:\Inetpub\vhosts\webmail\horde\lib
;.;./includes;./pear') in C:\Inetpub\vhosts\webmail\horde\lib\Horde\DataTree
\sql.php on line 1620

Para arreglar este problema, solo tenemos que editar la linea de include_path en nuestro nuestro php.ini
agregamos: c:/inetpub/vhosts/webmail/horde/pear;

include_path = "c:/inetpub/vhosts/webmail/horde/pear;.;./includes;./pear"

Ahora solo vamos a http://webmail.midominio.com y entramos a Horde sin nigun error.

Referencias
Post original: http://forum.swsoft.com/showthread.php?threadid=45054
Solución en Linux: http://forum.swsoft.com/showthread.php?threadid=32922

Posteado el Junio 20th, 2007 por netors  |  No Comments »

Migrar una base de datos MySQL con caracters latin1 (tildes.. etc)

Para migrar una base de datos de tipo MySQL con caracteres latin1, como pueden ser acentos, dierisis etc… es necesario especificarlo al momento de hacer el dump. Suponiendo que el servidor MySQL este en el directorio C:\MySQL\ utilizamos los comandos:

C:\MySQL\bin>mysqldump -h <servidor_fuente> -u <usuario> -p <base_de_datos> --default-character-set=latin1 > dump.sql
 
C:\MySQL\bin>mysql -h <servidor_destinatario> -u <usuario> -p <base_de_datos> < dump.sql

Posteado el Junio 18th, 2007 por netors  |  No Comments »

Como instalar PHP 5 en IIS 6.0

Esta guia rápida consiste en 3 pasos básicos:
1. Instalar PHP 5
2. Configurar PHP 5
3. Configurar IIS 6

1. Instalar PHP 5

1.1 Bajar y descomprimir PHP 5
Primero es necesario obtener la ultima versoin de PHP 5

2.3 5 de http://www.php.net/ (el zip no el instalador de windows), despues hay que descomprimirlo en cualquier directorio (suponemos C:\PHP5\ para esta guia)

1.2 Renombrar php.ini-recomended a php.ini
Dentro de la carpeta C:\PHP5\ hay que renombrar el archivo llamado php.ini-recomended a php.in.

2. Configurar PHP (php.ini)

2.1 cgi.force_redirect = 0
Dentro del archivo php.ini, hay que quitarle el comentario a la linea
cgi.force_redirect = 0
esto es muy importante, ya que instalaremos PHP 5 como ISAPI y no CGI dentro de IIS 6

2.2 session.save_path
No es absolutamente necesario, pero la mayoria de las aplicaciones en PHP utilizan sesiones, por lo que hay que poner un directorio dentro de esta variable, y asegurarnos de que IIS tenga los permisos de escritura/lectura dentro de ese directorio. Para esta guia utilizaremos:
session.save_path = C:\WINDOWS\TEMP\

Para darle permiso a IIS 6 de escritura/lectura en el directorio C:\WINDOWS\TEMP\ hay que abrir el Windows Explorer, encontrar el directorio, dar click derecho, click en Properties, iir al tab Security, luego en Add, despues para ocalizar el usuario, damos click en Advanced y despues en Find Now, agregamos el usuario/grupo (normalmente IIS_WGP o algo por el estilo), checamos los permisos y le damos click en OK.

2.3 Agregar C:\PHP5\ a la variable de entorno PATH
(o copiar los archivos que no son .dll a c:\windows\system32\ o algun otro folder que ya este incluido en PATH, pero para una mejor organizacion y orden, vamos a agregar C:\php5\)

Para agregar el directorio C:\PHP5\ a la variable de entorno PATH, hay que dar click derecho en My Computer, despues click en Properties, vamos al tab Advanced options, click en el boton Environment Variables, y bajo System Variables, buscamos la variable PATH y le damos doble click.

Ahora escribimos ya sea C:\PHP5\; al principio, o ;C:\PHP5 al final del string, despues damos aceptar, aceptar. Hay que reiniciar el servidor para que este cambio surta efecto.

2.4 Agregar la llave al registro de windows: HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath = C:\PHP5

Para agregar esta llave, creamos un nuevo archivo de texto en cualquier directorio, al que vamos a llamar llave.reg, dentro de este archivo escribimos:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\PHP]
“IniFilePath”=”C:\\PHP5″

Grabamos el archivo, y le damos doble click y Si a la confirmación.

Para verificar si se agrego la llave, hacemos click en Start, despues Run, escribimos “regedit” y damos OK, despues buscamos dentro del arbol de directorios, la llave que acabamos de crear (HKEY_LOCAL_MACHINE\SOFTWARE\PHP).

3. Configurar IIS 6

3.1 Agregar la extension C:\PHP5\php5isapi.dll a Web Service Extensions
Abrimos el IIS Manager, vamos a Web Service Extensions, damos click en Add new Web service extension. En donde dice Extension name, escribimos PHP ISAPI Extension, damos click en Add y buscamos el archivo C:\PHP5\php5isapi.dll, despues checamos Set extension status to Allowed y damos OK

3.2 Agregar la extension de los archivos al sitio web (.php)
Dentro del IIS Manager, vamos a Web Sites, damos click derecho en nuestro sitio, despues Properties, nos vamos al tab Home Directories, despues click en Configuration, al tab Mappings y click en Add. Escribimos C:\PHP5\php5isapi.dll en donde dice Executable en Extension, escribimos “.php”.

Damos click en el boton radial Limit to, y escribimos “GET, POST, HEAD”, despues click OK hasta salir.

3.3 Habilitar permiso de ejecución de script
De vuelta en Web Sites, Properties, Home Directories, cambiamos Execute Permissions a Scripts only

3.4 Reiniciamos IIS Manager
Start, Ejecutar, escribimos “iisreset” y damos OK.

Básicamente estos son los pasos a realizar para instalar PHP 5 en IIS 6, no es una guia muy extensa ni tampoco muy a fondo, solo te lleva de la mano pero creo que es fácil de captar.

Posteado el Junio 18th, 2007 por netors  |  1 Comment »