Se hace necesario Instalar magickwand en debian 7 y plesk 12.5 tras una migración del servidor.
He creado el vhost nuevo, he copiado los archivos de un servidor a otro y cuando le doy a ver la web en el navegador, no funciona, no carga ni una sola imágen. Miro los logs y veo este mensaje:
PHP Fatal error: Call to undefined function NewMagickWand(....
No me acordaba que esta web utiliza la librería phpmagickwand, si, todavía hay webs que la utilizan, el problema es la instalación en un servidor con plesk ,bajo debian 7, con versiones más actualizadas y que hacen difícil la instalación .
Me bajo la librería en cuestión de magickwand de la siguiente dirección: http://www.magickwand.org/download/php/MagickWandForPHP-1.0.9-2.zip
Una vez descargada, la recomendación es que la descompresión se realice en /usr/local/src accedemos a esta dirección y ejecutamos el orden de las instrucciones de instalación que indican en su página web, en primer lugar
phpize
llega el primer problema, no se encuentra instalado, hay que instalar php5-dev para que permita phpize, una vez instalado ya debería funcionar correctamente, el phpize, se realiza, siguiente problema no encuentra magickwand, instalo entonces la librerías imagemagick, libimagickwand-dev
apt-get install imagemagick libimagickwand-dev
, una vez instalado parece que todo va a ir bien, lanzo el
./configure
y error, el mensaje que se muestra es que no encuentra magickwand-conf, después de mucho googlear (he perdido tiempo en esto) por curiosidad hago un locate y ahí está en otra carpeta, en este caso viene instalado por libimagickwand-dev , hago un locate y está en la carpeta /usr/lib/x86_64-linux-gnu/ImageMagick-6.8.9/bin-Q16/, ahí está pues nada, lanzo en este caso el ./configure con el path donde se encuentra (es una opción del ./configure , que podemos ver en ./configure –help)
si lo lanzamos así:
./configure --with-magickwand=/usr/lib/x86_64-linux-gnu/ImageMagick-6.8.9/bin-Q16/
ya no da error y finaliza sin errores, un paso más parece que el final está cerca, pues no, todavía se resiste, hacemos el
make make test make install # los pasos que nos indica el instalador.
Y como resultado nos indica que ya está la extensión compilada en la carpeta /usr/lib/php5/20131226/ ahí tenemos el maravilloso archivo magickwand.so que tanto anhelábamos.
Seguimos ahora hay que hacer que lo cargue php cuando se lance, en anteriores versiones bastaba con hacerlo en un php.ini genérico para que éste fuera cargado por el resto de php.ini’s que tiene plesk para cada vhost, pero en este caso , en esta versión es mucho más complejo, hay además de diferentes php.ini’s de cada vhosts, hay diferentes versiones de php.ini’s dependiendo de la versión que queremos ejecutar en cada momento.
Como en este caso concreto yo lo que necesito es que se ejecute en php5.3 que es una versión obsoleta, pero en la que se que me funciona la web que utiliza de magickwand, en este caso se ha hecho necesario instalar php plesk-php53-dev, aunque no se si a la larga será necesario del todo, un apt-get istall plesk-php53-dev y se instala.
Después de esto lo que tenemos que hacer es lo siguiente, buscamos la carpeta con las extensiones para la versión concreta de php que se va a ejecutar en nuestro vhost y donde queramos la extensión (en mi caso la 5.3)
cd /usr/lib/php5/20131226/ cp magickwand.so /opt/plesk/php/5.3/lib/php/modules/
Y la copiamos de la ubicación donde la teníamos compilada y la había dejado el make install de phpmagickwand, tras esta operación debemos crear el archivo .ini con la extensión creamos el magickwand.ini y lo dejamos en /opt/plesk/php/5.3/etc/php.d/magickwand.ini este archivo solo tendrá lo siguiente:
; configuration for php imagick module extension=magickwand.so
Tras realizar esto, reiniciamos php y si cargamos un archivo con phpinfo() tenemos la siguiente línea: /opt/plesk/php/5.3/etc/php.d/magickwand.ini, pero todavía no lo tenemos, se carga pero no funciona, falta el toque definitivo y éste es: plesk bin php_handler –reread tras hacer esto, tardará un poco (se hace eterno los segundos cuando se acerca el final para que funcione una instalación como ésta) , no da ningún error. Y si accedemos a plesk a tools & settings -> php settings , accedemos a la versión de php 5.3 y….
Ahí está magickwand
Lo activamos, aceptamos y nos vamos a nuestra web y sigue sin funcionar, está habilitado pero no carga en el phpinfo y la carga no funciona.
Después de realizar una vez más la compilación, he visto lo siguiente:
PHP : /usr/bin/php PHP_SAPI : cli PHP_VERSION : 5.6.19-0+deb8u1 ZEND_VERSION: 2.6.0 PHP_OS : Linux - Linux d8070316.vservers.es 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-1 (2016-03-06) x86_64 INI actual : /usr/local/src/MagickWandForPHP-1.0.9/tmp-php.ini More .INIs : CWD : /usr/local/src/MagickWandForPHP-1.0.9 Extra dirs : VALGRIND : Not used
resulta que al estar compilado con 5.6, no funciona con 5.3, o algo así, pero el caso es que he entrado en el plesk, he cambiado la versión con la que se ejecuta la web, de la versión php 5.3 a la versión php 5.6 y ha funcionado todo correctamente, he ejecutado el phpinfo y ahí está:
Solucionado!!!