When compiling IMAP on a 64 bit machine, use: make EXTRACFLAGS=-fPIC.
Gereksinimler
Bu eklenti, sisteminizde c-client kütüphanesinin kurulu olmasını gerektirir. En son sürümünü » ftp://ftp.cac.washington.edu/imap/ adresinden indirip kurabilirsiniz.
IMAP kaynak dosyalarının doğrudan sistemin include/ dizinine kopyalanmaması büyük önem taşır, aksi takdirde orada bazı sorunlar çıkabilir. En iyisi sistemde /usr/local/imap-2000b/ gibi yeni bir dizin oluşturup (yeri ve adı kullandığınız IMAP sürümüne bağlıdır) içine lib/ ve include/ gibi yeni dizinler açmaktır. IMAP kaynak ağacınızın c-client dizinindeki tüm *.h dosyalarını include/ altına ve tüm *.c dosyalarını lib/ altına kopyalayın. Buna ek olarak IMAP'ı derlerken c-client.a diye bir dosya oluşturulur. Bu dosyayı da lib/ dizininin altına koyup adını libc-client.a olarak değiştirin.
Bilginize:
c-client kütüphanesinin SSL ve/veya Kerberos destekli olmasını isterseniz paket ile birlikte gelen belgeleri okuyun.
Bilginize: Mandrake Linux'ta, IMAP kütüphanesi (libc-client.a) Kerberos desteği olmaksızın derlenir. SSL'li ayrı bir sürüm daha kurulur (client-PHP4.a). Bu bakımdan Kerberos desteği için kütüphanenin yeniden derlenmesi gerekir.
After few hours of testing it on CentOS 5 64 bit I'd like to share the steps required to compile imap with php:
1. Install openssl:
yum install openssl openssl-devel
2. If you don't have openssl compiled and installed in /usr/local/ssl create symlink:
ln -s /usr/lib64/openssl/engines/ /usr/local/ssl
3. Add the libraries:
ln -s /usr/include/ /usr/local/ssl/include
4. Compile IMAP
cd /path/to/imap_src
make lnp SSLTYPE=unix
5. Copy files as described above
mkdir lib
mkdir include
cp c-client/*.c lib/
cp c-client/*.h include/
cp c-client/c-client.a lib/libc-client.a
6. Compile PHP
cd /path/to/php/src
./configure --with-imap=/path/to/imap_src --with-libdir=lib64
If you run into an error similar to the following when compiling / making PHP:
errno 0x21c /usr/local/imap-2007e/lib/libc-client.a(netmsg.o)
ld: fatal: relocations remain against allocatable but non-writable sections
make: Fatal error: Command failed for target `libphp5.la'
You need to recompile the IMAP library and add -fpic or -fPIC to your CFLAGS.
See:
http://bugs.php.net/bug.php?id=35465
Also, if you compiled OpenSSL from source, you'll need to do the same, as you'll get error messages for libc-client.a
over Debian GNU/Linux 5.0 x86_64 we just need the following:
# apt-get install libc-client-dev
and enable kerberos support:
# ./configure ... --with-kerberos=/usr
...
after this the php configure was succesfully.
Recent version of PHP (at least 5.3.2) requires libc-client >= 2006.
Otherwise, you'll get an error similar to:
error: 'U8T_CANONICAL' undeclared (first use in this function)
http://bugs.php.net/40132
Spent hours and hours on compiling PHP with IMAP support on CentOS 64-bit but after many trial and error sessions I got if fixed.
If you have set the '--with-libdir=lib64' flag and you encounter the the 'cannot find the c-client library' error while compiling, try to create a symlink 'lib64' to 'lib' in your imap installation dir.
Apparantly, PHP will search only in lib64 directories if the flag is set. This also applies on the IMAP library but documentation lacks on this point.
