Php

  • Cambiar de version de php en apache local

    La intención de este post es saber cuantas versiones tenemos de php en nuestro servidor apache y como cambiarlas según las necesidades.

    Nuestro técnico de sistema nos preparo el servidor local para poder utilizar cualquiera de estas versiones php:

    • php 5.6
    • php 7.0
    • php 7.1
    • php 7.2

    Lo primeros saber que versiones tenemos instaladas de nuestra maquina. Una forma comoda sería:

    ls etc/php

    En nuestro equipo nos aparece el listado de las distintas versiones que tenemos instaladas.

    Esto es útil para poder testear webs en distintas versiones de php, ya que muchas veces los servidores que tienen nuestros clientes no siempre tienen la utlima version de php.

    Lo primero que hay que saber es que version tienes ahora activa:

    • Viendo phpinfo()-> Te lo indica...
    • Con ls /etc/apache2/mods-enabled/php* nos indicara que versiones tenemos activas :-)

    Para activar una version lo hacemos con a2enmod, por ejemplo queremos activar php5.6 con:

  • Enviar correo de PHP con la librería PHPMailer

    PHPMailer es una biblioteca de php para enviar correos electrónicos de forma segura y fácil a través de un código PHP desde un servidor web..

    Estas son algunas de las funciones que trae son:

    • Envíos a varios remitentes, con CC, CCO, etc.
    • Soporta 8bits, base64 y binarios
    • Autenticación por SMTP en puertos 25 sin encriptar, 587 TLS, 465 SSL
    • Envíos con HTML
    • Envíos de emails con adjuntos
    • Inclusión de imágenes en el correo, etc
  • Herramientas para : Copias, migraciones, diferencias estructuras, llenar ...

    Herramienta para trabajar con Bases de datos (MySQL o MariaDB)

    Alguna de la siguiente herramientas que utilizamos cuando trabajamos con bases de datos de mysql o MariaDB.

    Herramientas con las que podrás copiar, hacer migraciones de versiones, ver diferencias estructuras y incluso llenar con script automatizados.

    Mysql - Recuperar respaldos de base de datos de mysql o maria-db

    El programa que utiliza para hacer copias de seguridad es mysqldump es un programa que forma parte de los "MySQL Client Programs" de MySQL, que puede ser utilizado para generar respaldos de bases de datos y ser usados o incluso para ser transferidos a otro servidor de base datos SQL .

    Para poder importar la base datos comprimida (xz) lo hacemos desde terminal con la siguiente instrucción.

    mysql -u usuario -p base_datos < <(xz -cd < copia_de_base_datos_comprimida.dump.xz)

     

    Mysqldump : Copia de seguridad.

    Nuestro responsable de sistema utiliza una tarea cron en /etc/cron.d/backupbbddr para que ejecute un script que esta en /usr/local/sbin/backupbbdd  y realiza por cada base datos un backup utilizando mysqldump y comprimido con xz.,

    Copia de solo estructura

    Para hacer una copia de seguridad de solo la estructura :

    $ mysqldump -uUsuario -p -h servidorMySQL --databases basea1 -d > basea1.sql
    

    Copia de base datos completa

    Hacer una copia de seguridad de la bases datos (basea1) completa

    $ mysqldump -uUsuario -p -h servidorMySQL --databases basea1 > basea1.sql
    

    Copia de bases datos comprimida

    Nosotros utilizamos XZ Utils en linux para comprimir, por ello si queremos que nos haga una copia comprimida de la base datos, utilizamos la siguiente instruccion.

    $ mysqldump -uUsuario -p -h servidorMySQL --databases basea1 | xz > basea1.sql
    

    Con pipe y un simple xz , ya nos realiza la copia de seguridad comprimida.

    Copia por ssh de base datos

    Si lo quieres es hacer una copia de la base de datos en tu equipo local de un servidor y tienes conexion por ssh

    $ ssh usuario@servidor mysqldump nombrebasedatos > nombresfichero.sql

    Te realiza una copia en la carpeta que este de la base datos que indicaste, logicamente tienes que tenes instalado mysqldump en el servidor.

     

    sqlt-diff: Diferencias estructura

    Si queremos obtener las diferencias que hay entre las estructuras de dos bases de datos, podemos hacerlo asi.

    $sqlt-diff basea1.sql=MySQL basea2.sql=MySQL > diff.sql

    Obtenemos un sql para poner la estructura de la primera base de datos igual de la segunda.

    Suele dar problemas los comentarios, me imagino que hay forma de ignorarlos en las opciones de "sqlt".

    Otro problema que me encontre son los autoincrement que seguramente no queramos ponerlos igual, asi que tenerlo en cuenta.

    Phinx : Migraciones y seed

    Este no es un programa, necesita una instalacion un poco mas compleja, ya requiere de composer, en fin, en su web puedes ver como instalarlo y mucha documentacion.

    Nosotros la utilizamos como librería mas para nuestros proyectos en php, según su web es la forma mas nativa de php de hacer migraciones de una base de datos.

    La cuestion es que puedes hacer cambios en la base de datos de una forma ordenada y controlada, como si fuera un controlador de versiones de la base de datos. Lo que hizo que empezarámos a utilizarlo es el metodo down, con el que podemos estado de la estructura de datos en versiones anteriores.

    La instalación  de  Phinx

    Como ya dije , necesitas tener composer en el servidor  o equipo local donde tenga SQL . La instalación de composer ya explicaré como, ya que ahora no lo recuerdo.. :-) lo unico que recuerdo es que requirió tener instalado php 7.2

    Para instalar phix:

    #composer require robmorgan/phinx
    php composer.phar require robmorgan phinx
    

    En el siguiente link podrás ver información muy buena y en español para comprenderlo y utilizarlo.

    Nosotros de momento solo voy explicar como aplicamos la migraciones.

    php vendor/bin/phinx migrate -e development

    Nosotros en la configuracion utilizamos nombres de los distinto proyectos o ramas, en vez development, esto se puede cambiar en el fichero phinx.yml.

     

    Fuentes y referencias:

    LinuxTotalLinuxTotal

    Cooperativa de Software Libre - Creando script de migraciones