Instalar Runkit en Debian

Tengo que escribir este post mas que nada para acordarme que carajo hice para instalar Runkit. Runkit es una extensión de PHP que permite modificar los simbolos del interprete en tiempo de ejecución, que significa esto, basicamente que puedo modificar el valor de las constante, redefinir variables globales, modificar el comportamiento de las funciones, metodos objetos y otras cosas del entorno en tiempo de ejecución. La pregunta del millon de dolares es para que carjo quiero hacer algo tan descabellado, la respuesta es sencilla, estoy viendo como poder hacer mocks de funciones y para ello necesito poder, en tiempo de ejecución, modificar las funciones previamente definidas para injectar el mock de la misma. Moraleja, esta extensión es bastante prohibida y no debería utiliarse nunca, no se les ocurran andar instalandola para hacer sistemas de producción.

Bueno, estuve peleando toda la tarde con la Mac roñosa que me dan en el laburo para poder compilar esta extensión, logre compilarla pero la extensión quedo pinchada, tira segmentation fault por todos lados, voy a escribir otro post para cuando la tenga funcionando posta. Pensé que en mi Linux iba a funcionar de una pero me encontré con que tampoco se podía compilar tan fácilimente, aparentemente el build de PECL esta pinchado y no funciona bien con PHP 5.3 en Debian y derivados, pero hay un santo que se tomo el trabajo de hacer una versión que funciona.

Los pasos de instalación son sencillos.

#wget https://github.com/zenovich/runkit/zipball/master

#unzip tcz-phpunit-mockfunction-{hashcambia}.zip

#cd tcz-phpunit-mockfunction-{hascambia}

#phpize

#./configure

#make

#make install

Si todo salio sin errores el último paso es habilitar la extensión, en el caso normal consta con añadir la regla extension=runkit.so al php.ini; como en los debians se mantiene una conf separada para  el interprete de la linea de comandos (cli) y el apache la mejor opcion es añadir un archivo runkit.conf en el directorio /etc/php5/conf.d con la linea para incluir la extension.

# echo ‘extension=runkit.so’> /etc/php5/conf.d/runkit.conf

Para testear si esta funcionando

echo ‘extension=runkit.so

% php –info|grep runkit

/etc/php5/cli/conf.d/runkit.ini,

runkit

runkit support => enabled

runkit.internal_override => Off => Off

runkit.superglobal => no value => no value

Si aparecer support enabled esta funcionado. Voy a seguir trabajando sobre esto y voy a ir posteando mas cosas al respecto de este viaje que estoy haciendo sobre esta extensión.
Links de interes
Share

Leave a Reply

Your email address will not be published. Required fields are marked *