martes, 31 de agosto de 2010

PHP 5.3 >> Funciones obsoletas

Con la llegada del PHP5.3 algunas características anteriores has sido obsoletas (Deprecated).

Ahora PHP 5.3 tiene dos nuevos niveles de error: E_DEPRECATED y nos advierte que la actual función esta obsoleta.

Pero no solo afecta a la programación sino también a la configuración del php.ini. La siguientes características lanza el error E_DEPRECATED al inicio de la ejecución.

* define_syslog_variables
* register_globals
* register_long_arrays
* safe_mode
* magic_quotes_gpc
* magic_quotes_runtime
* magic_quotes_sybase

En esta nueva versión también hay un montón de funciones obsoletas que es necesario conocerlas para evitar sustos desagradables:

* r call_user_method() (usar call_user_func() )
* call_user_method_array() (usar call_user_func_array() )
* define_syslog_variables()
* dl()
* ereg() (usar preg_match() )
* ereg_replace() (usar preg_replace() )
* eregi() (usar preg_match() )
* eregi_replace() (usar preg_replace() )
* set_magic_quotes_runtime() y sus alias, magic_quotes_runtime()
* session_register() (usar la superglobal $_SESSION )
* session_unregister() (usar la superglobal $_SESSION )
* session_is_registered() (usar la superglobal $_SESSION )
* set_socket_blocking() (usar stream_set_blocking() )
* split() (usar preg_split() )
* spliti() (usar preg_split() )
* sql_regcase()
* mysql_db_query() (usar mysql_select_db() and mysql_query() )
* mysql_escape_string() (usar mysql_real_escape_string() )
* El parametro is_dst de mktime(). Utilizar el nuevo controlador.

Y finalmente, para terminar pongo las ultimas características obsoletas en php 5.3:

* La asignación del retorno del valor de un new por referencia es obsoleto.
* Call-time pass-by-reference es obsoleta
* El uso de {} para acceder a índices de las cadenas es obsoleto. Se debe usar [] en su lugar.

domingo, 29 de agosto de 2010

Linux >> MySQL >> Restaurar privilegios usuario Root

Puede ocurrir (aunque es raro) que el usuario root de MySQL pierda los privilegios respecto a las bases de datos. Esto puede ser solucionado del siguiente modo:

Parar el servicio mysql (Entrar en services.msc y parar el servicio).
Iniciar mysql desde línea de comandos con la opción –skip-grant-tables:

mysqld --skip-grant-tables

o bien:

mysqld_safe --skip-grant-tables --skip-networking&

Abrimos otra consola, y nos conectamos al mysql con el usuario root, pero sin password:

mysql -u root

Seleccionamos la base de datos mysql:

use mysql;

Añadimos un nuevo superusuario llamado root2, de este modo creamos un ususario con todos los privilegios, a través del cual otorgaremos de nuevo los privilegios al usuario root:

INSERT INTO user VALUES('localhost', 'root2', '', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0');

Nota: La cantidad de columnas en el VALUES del INSERT puede variar según la versión del MySQL. Hacer un show create tables user; para ver cuantas columnas tiene la tabla.

Paramos el servicio mysqld –skip-grant-tables, podemos matarlo desde el taskmanager y arrancamos el servicio mysql de forma normal.
Accedemos con el nuevo superusuario (no tiene clave):

mysql -u root2

Otorgamos al usuario root los permisos necesarios:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'root_password' WITH GRANT OPTION;

Recargamos los privilegios:

FLUSH PRIVILEGES;

Eliminamos el usuario root2:

use mysql;

delete from user where user='root2';

flush privileges;

sábado, 7 de agosto de 2010

LInux >> consola >> cuál es mi distribución y versión

Suele suceder, que a veces queremos averiguar que versión de cierta distribución GNU/Linux estamos utilizando; o porque no, que Distribuciones GNU/Linuxdistribución de GNU/Linux se tiene instalada y no sabemos como averiguarlo.

Como siempre, la consola puede respondernos todo esto. Y mucho más.

Veamos qué comandos podemos utilizar para tal fin; usando mi distro como ejemplo:

# cat /etc/issue.net

Lo que nos devolverá un mensaje como el siguiente:

# Fedora release 13 (Goddard)

Es decir, que nos muestra la distribución y su versión.

También es posible que queramos un poco mas de información, para ello ejecutamos el siguiente comando:

# cat /proc/version

Lo que nos devolverá un mensaje como el siguiente:

# Linux version 2.6.33.6-147.2.4.fc13.x86_64 (mockbuild@x86-18.phx2.fedoraproject.org) (gcc version 4.4.4 20100630 (Red Hat 4.4.4-10) (GCC) ) #1 SMP Fri Jul 23 17:14:44 UTC 2010

Como vemos, nos muestra mucho más información, como la versión de Kernel, la arquitectura, la versión de Fedora, y demás.

Y si sabemos cual es la distribución, y queremos averiguar la versión de la distro utilizada, podemos ver en la siguiente lista (de la que me entero en Unix.com), los archivos de información para las diferentes distribuciones.

Novell SuSE: /etc/SuSE-release

Red Hat: /etc/redhat-release, /etc/redhat_version

Fedora: /etc/fedora-release

Slackware: /etc/slackware-release, /etc/slackware-version

Debian: /etc/debian_release, /etc/debian_version

Mandrake: /etc/mandrake-release

Yellow dog: /etc/yellowdog-release

Sun JDS: /etc/sun-release

Solaris/Sparc: /etc/release

Gentoo: /etc/gentoo-release