-
编译php的zip模块
mkdir /zip-php
cd /zip-php
yum -y install gcc autoconf
wget http://pecl.php.net/get/zip
tar -xvzf zip
cd zip-1.15.4
/opt/lampp/bin/phpize php的安装路径
./configure --with-php-config=/opt/lampp/bin/php-config
报错 checking for libzip… not found -
安装libzip
cd /zip-php
wget https://nih.at/libzip/libzip-1.2.0.tar.gz
tar -zxvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
报错 error: ZLIB version too old, please install at least v1.1.2 -
安装zlib-devel
yum install -y zlib-deve
make ;make install
报错 /usr/local/include/zip.h:59:21: 致命错误:zipconf.h:没有那个文件或目录
#include <zipconf.h>
执行以下命令查找,一般情况都是有的 find /usr/local -iname ‘zipconf.h’
找到后执行做个软链接
ln -s /usr/local/lib/libzip/include/zipconf.h /usr/local/include/
然后再执行
make ;make install -
修改php.ini
打开php.ini文件,去掉extension="zip.so"前面的分号
修改extension_dir = “./” 为 zip.so 所在的路径,重启apache ,httpd
附上一个php的测试脚本
function remove_directory($dir) {
$files = array_diff(scandir($dir), array('.','..'));
foreach ($files as $file) {
if (is_dir("$dir/$file")) {
remove_directory("$dir/$file");
} else {
unlink("$dir/$file");
}
}
return rmdir($dir);
}
function parseWord($file) {
$content = '';
$zip = new ZipArchive();
if ($zip->open($file) === true) {
for ($i=0; $i < $zip->numFiles; $i++){
$entry = $zip->getNameIndex($i);
if (pathinfo($entry, PATHINFO_BASENAME) == "document.xml") {
$zip->extractTo(pathinfo($file, PATHINFO_DIRNAME)."/".pathinfo($file, PATHINFO_FILENAME).array($entry));
$filepath = pathinfo($file, PATHINFO_DIRNAME)."/".pathinfo($file, PATHINFO_FILENAME)."Array"."/".$entry;
$content = strip_tags(file_get_contents($filepath));
break;
}
}
$zip->close();
remove_directory(pathinfo($file, PATHINFO_DIRNAME)."/".pathinfo($file, PATHINFO_FILENAME)."Array");
return $content;
} else {
return '';
}
}
echo parseWord('/opt/test.docx');