2012-06-22 16 views
5

Quería que la última versión de PHP funcionara en una Macbook nueva, pero la instalación de php no incluye las funciones imap de manera predeterminada. Hay una función específica que necesito, a saber, la función "imap_rfc822_parse_headers", pero no tengo ganas de volver a compilar, construir e instalar PHP (sin mencionar el esfuerzo que se requiere para instalar c-client y imap.so de antemano) solo para eso . Me temo que los complicados procedimientos (de los cuales cada uno de los que he encontrado es algo diferente) podrían estropear mi instalación actual, que de ninguna manera era fácil de configurar.Uso de funciones imap en PHP sin reconstrucción y reinstalación

¿Hay alguna otra manera más fácil de instalar imap en PHP? En una nota relacionada, ¿hay quizás una alternativa basada en la clase para la función que necesito?

Respuesta

11

Finalmente he encontrado la solución. La mayor parte estaba aquí: http://www.september28.co.uk/blog/2011/11/24/php-imap-support-in-mac-os-x-lion-without-recompiling-php/

Mi máquina es una Macbook Pro de finales de 2011 con MacOSX 10.7.4, PHP 5.4. instalado a través de estas instrucciones: http://www.hirmet.com/mac-os-x-lion-upgrade-to-php-5-4

Aquí está un paso a paso para los que tienen una configuración similar o idéntica:

descargar el código fuente IMAP desde esta dirección, se centran en la que tiene la fecha más reciente, que doesn' final t en "Z": ftp://ftp.cac.washington.edu/imap/

Desarchivar, ir a la carpeta, ejecute los siguientes comandos:

$ make osx EXTRACFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" 

el comando anterior tirar un montón de advertencias a usted, pero debe completar con éxito, a diferencia de la comando sugerido originalmente en la publicación del blog del 28 de septiembre.

A continuación, haga lo siguiente:

$ sudo cp c-client/*.h /usr/local/include/ 
$ sudo cp c-client/*.c /usr/local/lib/ 
$ sudo cp c-client/c-client.a /usr/local/lib/libc-client.a 

Una vez hecho esto, vaya a la carpeta de origen php descargado si ha realizado una actualización de costumbre como lo hice (según el segundo eslabón de la respuesta) y construir la extensión imap.so para tu sistema. Si no compiló una versión personalizada, simplemente descargue la fuente de PHP para la versión que ha instalado, y use eso, no importa.

$ cd ~/Downloads/Php-5.4.4/ext/imap 
$ phpize 
$ ./configure --with-imap==/usr/local/imap-2007 --with-kerberos --with-imap-ssl 
$ make 

Una vez hecho esto, haga lo siguiente:

$ sudo cp modules/imap.so /usr/lib/php/extensions/no-debug-non-zts-20100525/ 

... o si su carpeta de extensión PHP es diferente, puesto que (se puede ver la ubicación de phpinfo();)

Reinicia Apache y deberías estar listo para continuar.

$ sudo apachectl restart 
+0

Cuando trato de hacer: hacen OSX EXTRACFLAGS = "- arco i386 x86_64 -arch -g -Os -pipe -no-CPP-precomp" en mi OS X Mountain Lion, me sale este error: - bash: $: comando no encontrado ¿Qué debo hacer para continuar? –

+0

omite $ de cada comando que escriba, eso es solo el símbolo de entrada bash. – Swader

+0

Tuve que dar un paso extra, en mi php.ini tuve que agregar la extensión manualmente. $ sudo nano php.ini -> buscar Extensiones dinámicas -> agregar extensión = "/ usr/lib/php/extensiones/no-debug-non-zts-20100525/imap.so" -> guardar y salir -> reiniciar apache de nuevo – jolyonruss