今天在Linux底下上傳Excel檔案並顯示輸出時,拋出“ZipArchive library is not enabled” 的異常。而我在本地的windows下的代碼則是運行正常的。
原因是:在Linux下沒有php_zip.dll這個檔案(有也不會起作用的),所以需要重新編譯一下php的zip模組。
在Unix/Linux下的解決辦法 :
1、依次運行如下命令:
cd /opt/lampp/
wget http://pecl.php.net/get/zip (預設會線上下載最新版本的,我這裡用的是zip-1.10.2.tgz)
tar -zxvf zip-1.10.2.tgz (所下載的包名)
cd zip-1.10.2
/opt/lampp/bin/phpize (對應的phpize路徑 find / -name phpize 出來結果/opt/lampp/bin/phpize)
./configure --with-php-config=/opt/lampp/bin/php-config (對應的php-config路徑)
make
make instal
2、查看產生的模組路徑(安裝完之後,螢幕上會提示zip.so的位置):
cd /usr/lib/php/modules/ (對應的extensions路徑 /usr/lib/php/modules/)
Installing shared extensions: /opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/
3、修改php.ini如:
增加 extension=/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/zip.so
然後同樣在php.ini檔案中,將zlib.output_compression = Off 改為 zlib.output_compression = On ;
4、最後再重啟一下XAMPP服務:
/opt/lampp/lampp stop
/opt/lampp/lampp start
這個針對php的zip模組就安裝完成了,能夠在php中使用ZipArchive類了。
附:在Windows下的解決辦法就比較簡單了 :
1、在php.ini檔案中,將extension=php_zip.dll前面的分號“;”去除
然後同樣在php.ini檔案中,將 zlib.output_compression = Off 改為 zlib.output_compression = On ;
2、重啟Apache伺服器。
注意事項:
若重啟 xampp 時提示:
Warning: PHP Startup: Unable to load dynamic library ‘/opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/memcache.so’ – /opt/lampp/lib/php/extensions/no-debug-non-zts-20090626/memcache.so: wrong ELF class: ELFCLASS64 in Unknown on line 0
說明您的作業系統是 64 位元的,而 xampp 只對 32 位的系統提供支援。請下載如下壓縮包替換對應的檔案即可。
http://developerworks-ourplanet.googlecode.com/files/no-debug-non-zts-20090626.tar.gz