如何在PHP 5上安装ClamAV扩展?

我想用php自动扫描上传的文件以查找病毒。在早期版本的ubuntu中有一个叫做php-clamavlib的扩展,但在Natty上我得到了以下错误信息:
E: 无法找到软件包php5-clamavlib
难道没有任何扩展可用了吗?我该怎么做才能实现这个功能呢?
2个回答

在izx的回答、32bitfloat的评论和一些谷歌搜索的帮助下,我成功地让它在Ubuntu 12.04 LTS上运行起来了。以下是我所做的具体步骤。所有这些命令都需要以root权限执行,并且你的设置可能会有所不同。
准备工作
首先,清除任何现有ClamAV的痕迹:
aptitude install zlib1g-dev php5-dev
aptitude purge clamav clamav-base clamav-data clamav-docs clamav-freshclam libclamav6

安装ClamAV

下载最新的ClamAV,然后进行编译和安装:

wget http://downloads.sourceforge.net/clamav/clamav-0.98.4.tar.gz
tar xzf clamav-0.98.4.tar.gz
cd clamav-0.98.4
./configure
make
make install
ldconfig

让freshclam正常工作并运行它:
useradd clamav
mkdir /usr/local/share/clamav
chown clamav /usr/local/share/clamav
cp /usr/local/etc/freshclam.conf.sample /usr/local/etc/freshclam.conf

编辑文件/usr/local/etc/freshclam.conf,将注释行中的Example取消注释。然后进行更新。
freshclam

如果运行成功,通过扫描文件来测试它是否工作。
clamscan somefile

安装PHP-ClamAV

下载最新的PHP-ClamAV,然后进行编译和安装:

wget https://launchpad.net/php-clamav/trunk/0.15.7/+download/php-clamav_0.15.7.tar.gz
tar xzf php-clamav_0.15.7.tar.gz
cd php-clamav_0.15.7
phpize
./configure --with-clamav
make
make install

安装到Apache并重新启动:
echo "extension=clamav.so" > /etc/php5/conf.d/clamav.ini
service apache2 restart

希望这对某人有所帮助。我真的希望 Aptitude 仍然支持 php-clamav。这将比上述方法更好。

默认情况下,PHP扩展从/var/lib/clamav读取病毒数据库,这是apt clamav软件包的默认设置,但在您的回答中,数据库路径是/usr/local/share/clamav。 请确保删除/var/lib/clamav下的数据(apt purge命令无法完成此操作),然后可以选择创建一个链接:sudo ln -s /usr/local/share/clamav /var/lib/clamav,或者修改PHP的clamav.ini文件,添加clamav.dbpath=/usr/local/share/clamav - NeverEndingQueue
如果您不删除/var/lib/clamav目录下的数据,您将继续使用旧的病毒数据来运行您的PHP! 如果您删除了数据,但没有配置新的链接或路径,当运行php -i时,您可能会遇到LibClamAV Error: cl_load(): No such file or directory: /var/lib/clamav错误。 - NeverEndingQueue

请从Launchpad下载最新的php-clamav tarball。 如果您还没有安装php5-devclamav,请使用sudo apt-get进行安装。 解压tarball,进入php-clamav-xxxx目录,并按照以下步骤安装php-clamav模块(改编自INSTALL):
phpize
./configure --with-clamav
make  
cp modules/clamav.so /usr/local/lib/php/extensions/
(重新启动Apache)
service httpd restart

1谢谢,我成功安装了它,没有出现任何错误。但是通过下载clamav(http://www.clamav.net/lang/en/download/sources/)+配置+编译+安装来完成的。我猜apt-get install clamav并没有安装一个足够更新的版本。我还无法让扩展正常工作,但这可能是另一个问题了。 - 32bitfloat
我不得不卸载Ubuntu版本的ClamAV,然后安装上面链接的下载版本,接着安装php-clamav。这个为什么从Aptitude中删除了呢? - Marcus Downing
上面的扩展文件夹也是错误的 - 你可以通过运行 php-config --extension-dir 来找到系统中的扩展所在位置。 - Marcus Downing
我还需要将一个文件添加到/etc/php5/apache2/conf.d,文件内容为:extension=clamav.so,以启用该扩展。 - Marcus Downing