对于使用 Ubuntu 并且完全被编译这个吓倒的人来说,在 Ubuntu 下很简单
安装 libc-client-dev
# sudo apt-get install libc-client-dev
安装 PHP5 imap
# sudo apt-get install php5-imap
重启 Apache
# sudo service apache2 reload
应该适合大多数人。
此扩展需要安装 c-client 库。从 » https://github.com/uw-imap/imap 获取最新版本并编译它。
重要的是,您不要将 IMAP 源文件直接复制到系统包含目录中,因为可能会发生冲突。相反,在系统包含目录中创建一个新目录,例如 /usr/local/imap-2000b/(位置和名称取决于您的设置和 IMAP 版本),并在该新目录中创建名为 lib/ 和 include/ 的附加目录。从 IMAP 源树中的 c-client 目录中,将所有 *.h 文件复制到 include/ 中,并将所有 *.c 文件复制到 lib/ 中。此外,当您编译 IMAP 时,将创建一个名为 c-client.a 的文件。同样将它放到 lib/ 目录中,但将其重命名为 libc-client.a。
注意:
要使用 SSL 或/和 Kerberos 支持构建 c-client 库,请阅读随包提供的文档。
注意: 在 Mandrake Linux 中,IMAP 库 (libc-client.a) 在没有 Kerberos 支持的情况下进行编译。安装了带有 SSL 的单独版本 (client-PHP4.a)。必须重新编译库才能添加 Kerberos 支持。
对于使用 Ubuntu 并且完全被编译这个吓倒的人来说,在 Ubuntu 下很简单
安装 libc-client-dev
# sudo apt-get install libc-client-dev
安装 PHP5 imap
# sudo apt-get install php5-imap
重启 Apache
# sudo service apache2 reload
应该适合大多数人。
应该注意的是,华盛顿大学的源代码存档和镜像已经失效一段时间了。
这里有一个 github 仓库:https://github.com/uw-imap/imap
php-imap 包在 Red Hat Enterprise Linux 7 和 8 中都不可用。
要自己编译扩展
先决条件
# yum install pam-devel openssl-devel
按照之前“ldi at email dot cz”帖子中的步骤 2 和 3 进行操作
从 github 下载 c-client 库,您可以在页面顶部看到链接,并使用以下命令进行编译
# make lr5 SSLINCLUDE=/usr/include/openssl/ EXTRACFLAGS=-fPIC
(如果您使用的是其他发行版,则不会键入 lr5,而是其他内容,您可以查看 Makefile 以了解其他 Unix 版本)
按照之前“ldi at email dot cz”帖子中的步骤 5 进行操作,这正是页面顶部第二段所解释的内容。
下载系统中安装的 PHP 源代码版本,并转到 php/ext/imap 文件夹。
# phpize
(如果您从 Red Hat 软件集合安装了 PHP 软件包,则必须在设置环境之前运行以下命令,例如:scl enable rh-php73 bash)
# ./configure --with-imap=<<path_to_where_you_unpacked_the_c-client_library_and_compiled_it>> --with-imap-ssl
# make
这将创建文件 php/ext/imap/modules/imap.so :)
将其复制到您的 extension_dir(您可以在 phpinfo() 页面中找到它)。
在 php.d 文件夹中创建一个 .ini 文件,其中包含以下文本:extension=imap.so
重启 apache 并开心起来。
P.S. 您可能可以在外面找到编译好的扩展,但谁知道来源的可靠性,所以最好获取官方未经修改的来源。
在 64 位 OL5.7 机器上使用 php 5.3.27 编译 IMAP 2007f 时,在 Makefile 中添加:EXTRACFLAGS=-fPIC 和 EXTRAAUTHENTICATORS=gss
在 CentOS 5 64 位上测试几个小时后,我想分享编译 imap 和 php 所需的步骤
1. 安装 openssl
yum install openssl openssl-devel
2. 如果您没有在 /usr/local/ssl 中编译和安装 openssl,请创建符号链接
ln -s /usr/lib64/openssl/engines/ /usr/local/ssl
3. 添加库
ln -s /usr/include/ /usr/local/ssl/include
4. 编译 IMAP
cd /path/to/imap_src
make lnp SSLTYPE=unix
5. 按照上面描述的复制文件
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. 编译 PHP
cd /path/to/php/src
./configure --with-imap=/path/to/imap_src --with-libdir=lib64
在 Debian 7.7、php 5.4 上执行此操作的更安全、更轻松的方法
apt-get install php5-imap
已安装的软件包
libc-client2007e mlock php5-imap
Alpine 邮件客户端最初也是由华盛顿大学的 Mark Crispin 开发的,它也使用“c-client”库,并且该库仍在由 Eduardo Chappa 积极开发:https://alpineapp.email/alpine/release/。它有自己的更新的“c-client”库副本,该库支持 OAuth2 身份验证等新功能。
您可以通过 https://github.com/uw-imap/imap/commits/master/src/c-client 和 https://repo.or.cz/alpine.git/history/HEAD:/imap/src/c-client 来比较华盛顿大学 IMAP 和 Alpine“c-client”库的开发情况。
如果此 PHP 扩展无法与 Alpine“c-client”一起使用,那么有人可能需要移植 PHP 以使其能够使用。
在 CentOS 64 位上花费了几个小时来编译 PHP 并支持 IMAP,但在经过多次尝试和错误之后,我终于解决了问题。
如果您已设置“--with-libdir=lib64”标志,并且在编译时遇到“找不到 c-client 库”错误,请尝试在您的 imap 安装目录中创建指向“lib”的符号链接“lib64”。
显然,如果设置了标志,PHP 将只在 lib64 目录中搜索。这也适用于 IMAP 库,但文档对此缺乏说明。
如果您在编译/制作 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'
您需要重新编译 IMAP 库并将 -fpic 或 -fPIC 添加到您的 CFLAGS 中。
参见
http://bugs.php.net/bug.php?id=35465
此外,如果您从源代码编译了 OpenSSL,则需要执行相同的操作,因为您将收到 libc-client.a 的错误消息