最近PHP爆出漏洞,老高也在升级PHP版本,并加入一些支持,但是遇到这个问题很蛋疼
configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.
网上搜了各种教程,各种cp都没用,索性我们就自己编译吧!
yum install pam-devel libc-client libc-client-devel -y
如果使用了yum安装了libc-client,那么在以后编译参数--with-imap=/usr/local/php-imap
中的路径应该删除,即--with-imap
。
如果这样还不能解决,那么就需要手动编译imap2007f了!
在/usr/src
目录下运行以下脚本,将会在/usr/local/php-imap
目录下生成imap需要的库
#!/bin/sh # Script for PHP-IMAP installation. 0.1b # Written by Martynas Bendorius (smtalk) CWD=`pwd` OS=`uname` #Is it a 64-bit OS? B64=0 B64COUNT=`uname -m | grep -c 64` if [ "$B64COUNT" -eq 1 ]; then B64=1 LD_LIBRARY_PATH=/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib export LD_LIBRARY_PATH fi if [ ! -e /usr/include/krb5.h ] && [ -e /etc/redhat-release ]; then echo "Installing krb5-devel" yum -y install krb5-devel fi VERSION=2007f PROTOCOL=ftp URL="${PROTOCOL}://ftp.cac.washington.edu/imap/imap-${VERSION}.tar.Z" FILENAME=imap-${VERSION} TARBALL=${FILENAME}.tar.Z echo "Downloading ${TARBALL}..." wget -O ${TARBALL} ${URL} tar xzf ${TARBALL} cd ${FILENAME} echo "Installing ${FILENAME}..." if [ ${OS} = "FreeBSD" ]; then if [ ${B64} -eq 0 ]; then make bsf else make bsf EXTRACFLAGS=-fPIC fi else perl -pi -e 's#SSLDIR=/usr/local/ssl#SSLDIR=/etc/pki/tls#' src/osdep/unix/Makefile perl -pi -e 's#SSLINCLUDE=\$\(SSLDIR\)/include#SSLINCLUDE=/usr/include/openssl#' src/osdep/unix/Makefile perl -pi -e 's#SSLLIB=\$\(SSLDIR\)/lib#SSLLIB=/usr/lib/openssl#' src/osdep/unix/Makefile if [ ${B64} -eq 0 ]; then make slx else make slx EXTRACFLAGS=-fPIC fi fi echo "Copying files to /usr/local/php-imap" mkdir -p /usr/local/php-imap/include mkdir -p /usr/local/php-imap/lib chmod -R 077 /usr/local/php-imap cp -f c-client/*.h /usr/local/php-imap/include/ cp -f c-client/*.c /usr/local/php-imap/lib/ cp -f c-client/c-client.a /usr/local/php-imap/lib/libc-client.a cd .. rm -rf ${FILENAME} if [ -d /usr/lib/x86_64-linux-gnu ] && [ ! -d /usr/kerberos/lib ]; then mkdir -p /usr/kerberos ln -s /usr/lib/x86_64-linux-gnu /usr/kerberos/lib fi exit 0;
下面是编译PHP的参数,如果出现问题,请参考编译PHP5.6 和 PHP编译错误的解决办法。
./configure --prefix=/usr/local/php --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-pdo-mysql --with-mysqli --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --enable-ftp --with-imap=/usr/local/php-imap --with-imap-ssl --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-fpm --with-fpm-user=www --with-fpm-group=www --disable-fileinfo
在本次编译中,老高又遇到了几个怪事
configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no
这个问题还是库文件的链接问题
解决:
echo /usr/local/lib > /etc/ld.so.conf.d/local.conf ldconfig -v
请参考 PHP安装memcached扩展
原文链接: https://blog.phpgao.com/libc-client-404.html