Definir variable de entorno en PHP

Queremos definir una variable de entorno en PHP, a la que poder acceder en cualquier momento desde la aplicación, y que la podamos definir en un archivo de configuración, pudiendo cambiar su valor según el entorno en el cual ejecutamos la aplicación, sin necesidad de hacer cambios en el código.

Definir variable en .conf

Editamos httpd.conf, añadiendo el include hacia un nuevo fichero de configuracion que crearemos, donde haremos las definiciones de variables que queramos, y que llamaremos occidentalValley.conf.

Añadimos lo siguiente a httpd.conf (normalmente hay un apartado de Includes en httpd.conf, no está de más mantener el order y hacerlo allí…):

En la misma carpeta donde tenemos a httpd.conf, creamos el nuevo archivo de configuración propio, al que llamamos occidentalValley.conf, con las definiciones de variables que queramos, en nuestro caso, este será el contenido:

Esto será todo, ahora desde nuestra aplicación podremos acceder al valor de la variable BASE_PATH, y obtener su resultado, de la siguiente forma:

Con esto terminamos nuestra definición de la variable de entorno en PHP, que nos permitirá definir valores de variables que puedan depender del entorno de ejecución, manteniendo el mismo código.

Primera letra en mayúsculas en PHP

Si queremos que cada palabra de una frase empiece con la primera letra en mayúsculas, podemos usar la función de PHP ucwords().

Esta función se encarga justamente de eso: que todas las primeras letras de cada palabra que le pasemos como parámetro, estén en mayúscula:

Vemos en la segunda llamada, llamamos habiendo convertido toda la cadena de texto en minúsculas, para que así nos quede todo en minúsculas excepto la primera letra inicial de las palabras.

Consumir webservice de Drupal desde PHP

Con esta entrada veremos la forma (una forma) de consumir desde PHP un servicio web publicado mediante Drupal. Lo haremos usando la librería Client URL, cURL, que es una implementación de libcurl para PHP, y que nos permite hacer todo tipo de peticiones desde PHP.

El servicio web en cuestión publicado desde Drupal, es de tipo RESTful, y la particularidad más destacada que tiene es que la autenticación funciona mediante cookie. Esto significa que toda llamada a una función de ese servicio web debe llevar consigo una cookie con una sesion establecida previamente con el servidor.

Entonces el procedimiento cuando queremos hacer una petición a una función del servicio, inicialmente haremos una primera petición para autenticarnos y obtener una cookie con la sesión. Una vez hecho esto ya podremos hacer la petición a la función que queramos del servicio, adjuntando la cookie que hemos obtenido en la petición de autenticación.

El código

Vamos a ver el código en cuestión:

Haciendo las peticiones detrás de un proxy

En nuestro caso, tuvimos que añadir adicionalmente la configuración del proxy de nuestra red, puesto que para salir a Internet lo hacemos mediante un servidor proxy. Para hacer esto, simplemente añadimos dos opciones más al objeto curl: la url del proxy y su puerto:

Y esto es todo.

Librería CURL para PHP

La librería curl de PHP implementa la librería libcurl, y nos permite poder establecer conexiones de todo tipo y a todo tipo de destinos.

Para instalarla a nuestro servidor Ubuntu, haremos lo siguiente:

Una vez reiniciado apache ya podemos usar las funciones de la librería curl de php para establecer nuestras conexiones

Ejecutar comando shell desde Php en segundo plano

A veces tenemos que ejecutar algún comando shell desde una página PHP, para que el usuario haga alguna determinada tarea. Por ejemplo, ejecutar el comando pdflatex y que se genere un informe en Latex que el usuario se pueda descargar.

Cuando hacemos la llamada al comando sin más, el comportamiento normal de PHP será esperar a que el comando termine su ejecución, antes de que él siga con la función que estaba ejecutando. Esto a veces ya nos va bien (como el ejemplo anterior), pero otras por el motivo que sea, no nos conviene ese funcionamiento.

En ese caso, lo que queremos es ejecutar el comando shell en segundo plano, y que termine cuando termine, pero que PHP no se detenga a esperar… Para tener este comportamiento, lo que haremos será redireccionar la salida del comando a un fichero de texto. Con eso conseguiremos que PHP simplemente haga la llamada al comando, el cuál se empezará a ejecutar, y PHP seguirá ejecutando las demás sentencias de su función si más…