PHP

  • A veces es necesario procesar grandes archivos en PHP y los scripts superan el tiempo límite de ejecución. PHP tal vez no es la manera más eficiente de deprocesar un archivo, pero su codificación es más sencilla y rápida. Para evitar que el script llege al timeout, es necesario incrementar el tiempo límite de ejecución para procesar un script específico.

  • Este artículo explica cómo autenticar contra un servidor LDAP desde PHP. De yapa explica cómo enviar datos de un formulario a través del método POST de HTTP utilizando JavaScript puro.

  • Supongamos que tenemos un servidor Web LAMP (típicamente Linux+Apache+PHP+MySQL/MariaDB) con Apache y diferentes versiones de PHP instaladas y necesitamos cambiar la versión de PHP en uso por Apache (por ejemplo necesitamos pasar de PHP 5.6 a PHP 7.0). Este artículo explica los simples pasos para llevar a cabo esta tarea.

  • Siempre que terminamos de configurar un servidor LAMP (Linux+Apache+MySQL+PHP en general), es necesario hacer una prueba para verificar su correcto funcionamiento. Por ello, en este artículo dejo un script PHP para interactuar con una base de datos MySQL, junto con un script para crear una base de datos MySQL de prueba, como para tener siempre a mano.

  • En ocasiones puede ocurrir que una actualización de PHP haga que algunas funcionalidades de una aplicación Web dejen de funcionar. Esto es lógico cuando se avanza a una versión superior (por ejemplo si ciertas funciones dejan de ser soportadas), aunque no lo es cuando se trata de una actualización de seguridad, donde se mantiene la misma versión y simplemente se parchan vulnerabilidades. Eso fue lo que me sucedió hoy en un servidor de producción y me obligó a retroceder de versión en unos cuantos paquetes de PHP de manera urgente (shame on Squeeze LTS).

  • Una característica muy interesante que posee el servidor Fast CGI de PHP (PHP-FPM) es la posibilidad de detectar, y registrar en un log, aquellas solicitudes que tienen un tiempo de ejecución elevado. Esto puede ser de gran utilidad para descubrir cuales son las páginas de un sitio Web que tardan demasiado tiempo en procesar en el servidor, y por ende cargan demasiado lento.

  • Supongamos que hemos comprado un VPS (servidor privado virtual) con Debian/Devuan para montar nuestro sitio Web, y ya hemos instalado y comprobado el correcto funcionamiento de una pila LAMP (Linux+Apache+PHP+MySQL). Ahora deseamos instalar Joomla! para montar nuestro sitio Web. Este artículo demuestra los simples pasos de instalación de Joomla! en un servidor LAMP con Debian.

  • phpMyAdmin es una herramienta escrita en PHP para administrar servidores MySQL desde una interfaz Web. Soporta un amplio rango de operaciones sobre servidores MySQL y MariaDB. La mayoría de las cuales (gestionar bases de datos, tablas, columnas, relaciones, índices, usuarios, permisos, etc.) pueden realizarse a través de una interfaz de usuario, al mismo tiempo que es posible ejecutar cualquier sentencia SQL. phpMyAdmin se distribuye como software libre y es una herramienta popularmente utilizada en la gran mayoría de proveedores de hosting de Internet.

    Este artículo explica cómo instalar la última versión de phpMyAdmin desde los fuentes en un servidor Web con soporte para PHP.

  • phpMyAdmin es una aplicación PHP que permite gestionar servidores de bases de datos MySQL o MariaDB desde cualquier navegador Web. Es una herramienta ideal para permitir a desarrolladores el acceso y creación de bases de datos para una aplicación Web, ya que provee una vista conveniente y práctica a un motor de bases de datos MySQL, especialmente a aquellos usuarios no familiarizados con el cliente de línea de comandos mysql. Es el complemento ideal para tu servidor LAMP.

  • Los recientes artículos dedicados a FreeBSD publicados en este blog, fueron una suerte de preámbulo para llegar al objetivo final: implementar una nube personal utilizando ownCloud sobre un servidor FreeBSD con las siguientes características: Nginx como servidor HTTP; PHP-FPM como servidor de aplicación (PHP en modo FastCGI); Postgres como motor de bases de datos; y ZFS como sistema de archivos. Una combinación muy ambiciosa que, a pesar de no estar soportada oficialmente por ownCloud, pretende utilizar la mejor alternativa disponible para implementar cada componente, con el fin de alcanzar la máxima eficiencia y rendimiento posible. En términos futboleros sería una especie de "selección", poner el mejor jugador disponible para cada posición: ownCloud+FreeBSD+Nginx+PHP-FPM+Postgres+ZFS.

  • OpenBSD incluye su propia implementación de servidor Web llamado httpd, basado originalmente en relayd, y que (como todo proyecto relacionado a OpenBSD) apunta a la seguridad y en este caso en particular a la escalabilidad.

    httpd es un servidor Web seguro y minimalista (apunta a evitar la "featuritis" que sufren los servidores Web más importantes, notablemente Apache), que sirve archivos estáticos y soporta FastCGI y TLS. Incorpora algunas características básicas como listado de directorios, logging y autenticación basic. Para conocer la historia completa de httpd y cómo comenzó su desarrollo es recomendable el paper Introducing OpenBSD's new httpd.

    El objetivo de este artículo es montar el clásico servidor Web con soporte para PHP sobre un sistema OpenBSD. Y ya que httpd es el servidor Web por defecto en OpenBSD, se explica la instalación y configuración del mismo, en lugar de instalar Apache o Nginx desde los paquetes o ports.

  • En este artículo voy a demostrar cómo es posible pasar variables de entorno desde Nginx a PHP5-FPM para que estén accesibles en el arreglo $_SERVER de PHP.

  • Esta fue una semana de respuestas HTTP un tanto insólitas para mí. Luego de haber comentado mi experiencia diagnosticando una respuesta HTTP 503, esta vez me tocó solucionar el caso de una respuesta HTTP 413 en un servidor Nginx:

  • Recientemente tuve la necesidad de compilar PHP con soporte para LDAP. Sin embargo, al configurar el paquete con la opción --with-ldap, falla al momento del linking pues es necesario indicarle al linker que enlace con la librería -llber.

  • En este artículo voy a explicar detalladamente cómo compilar, instalar y configurar un servidor PHP FastCGI Process Manager (FPM) versión 7, desde sus fuentes. Incluyendo los cambios necesarios en la configuración de un sitio Joomla! para que funcione correctamente con PHP 7.

  • De todos los lenguajes de programación con los que he trabajado creo que PHP es el más flexible y poderoso. Hoy descubrí un excelente truco que permite crear y evaluar nombres de variables a partir de strings en una misma línea.

  • Muchas veces suele ocurrir que errores de programación de PHP (por ejemplo, falta de validación de variables o comprobación de límites en estructuras) llenan los logs del servidor Apache con mensajes PHP Notice. Si estos errores se repiten muy frecuentemente, pueden ocasionar un problema de espacio en disco (ya que los archivos de log crecen en forma desmedida). Sin contar con que llenan los logs con mensajes irrelevantes para el administrador de sistemas. Por lo tanto, puede ser necesario deshabilitarlos para que directamente no se guarde registro de los mismos en los logs de Apache.

  • He liberado la tercera versión estable de sere, mi herramienta para monitorear servidores Web en tiempo real desde cualquier navegador Web. Esta versión trae algunas novedades:

    • Posee gráficas mejoradas.
    • Muestra un extracto de los diez procesos que más CPU consumen.
    • Funciona correctamente en la mayoría de los navegadores, incluyendo Internet Explorer 11.
    • Muestra el uptime, fecha y usuarios cantidad de usuarios.
    • Muestra la carga promedio en los últimos 1, 5 y 15 minutos.
  • Al hacer debugging de scripts PHP es posible que necesitemos enviar mensajes de error a Apache si las tradicionales "banderitas" no funcionan. Puede ser el caso en el que un script entre en un bucle infinito y no alcance a mostrar por salida estándard sentencias "echo" o "print" (a pesar de que estén antes de la ejecución del bucle o ejecución problemática)

  • Luego de que dejé de utilizar Disqus, me propuse buscar un nuevo sistema de comentarios para el blog. Hashover es un sistema de comentarios desarrollado en PHP que intenta reemplazar servicios como Disqus, IntenseDebate, Livefyre, Facebook, Google+ y otros. El objetivo de Hashover es agregar una "sección de comentarios" a las páginas de cualquier tipo de sitio o blog. Por supuesto es un sistema auto-hospedado, a diferencia de los anteriormente mencionados, que son servicios. Esto significa que tanto la aplicación como los comentarios de los usuarios necesitan ser alojados en nuestro propio servidor Web, con todas las ventajas (privacidad, libertad, eficiencia, etc.) y desventajas (seguridad, moderación, control de spam y abusos, carga en el servidor, etc.) que esto implica.

    El proyecto está hospedado en GitHub y es de licencia libre (GNU Affero General Public License).

    En este artículo voy a demostrar cómo instalar la versión de desarrollo de Hashover (hashover-next), la cual posee un número de mejoras respecto a la versión estable actual (aunque sin embargo es inestable y no está libre de fallos y bugs). Cabe destacar que el procedimiento de instalación es muy similar al de la versión estable, documentado de manera correcta en el sitio oficial.