❶ php的ZipArchive無法打開文件的錯誤,有誰遇到過的
❷ 力求PHP高手,在linux下如何使用 ZipArchive
ZipArchive有依賴,肯定是你環境配置問題,打開php錯誤顯示,查找問題
Linux下可以執行shell解壓
exec("/usr/bin/unzip a.zip")
❸ php ZipArchive 警告問題 著急啊.
貌似你只給了目錄名,沒有給文件名和文件類型吧?
❹ 怎麼判斷ziparchive php擴展是否打開
1.文件下載
header("Content-type: text/html; charset=utf-8"); //設置頭信息
if (!file_exists($file_dir.$name)){ //判斷是否存在某個文件
echo "File not found!"; //如果不存在就提示用戶文件未找到
} else {
$file = fopen($file_dir.$name,"r"); //否則就讀取文件
Header("Content-type: application/octet-stream"); //設置瀏覽器下載需要的頭,告訴客戶端的瀏覽器服務端返回的文件形式 是一個下載文件
Header("Accept-Ranges: bytes"); //告訴客戶端瀏覽器返回的文件大小是按照位元組進行計算的
Header("Accept-Length: ".filesize($file_dir . $name)); //告訴瀏覽器返回的文件大小
Header("Content-Disposition: attachment; filename=".$name); //:告訴瀏覽器返回的文件的名稱
echo fread($file, filesize($file_dir.$name)); //按位元組讀取文件
fclose($file);//關閉文件資源
}
2.文件壓縮:
PHP ZipArchive 是PHP自帶的擴展類,可以輕松實現ZIP文件的壓縮和解壓,使用前首先要確保PHP ZIP 擴展已經開啟,
addEmptyDir() 添加一個新的文件目錄
addFile() 將文件添加到指定zip壓縮包中。
ddFromString()添加的文件同時將內容添加進去
open() 打開一個zip壓縮包
close()關閉ziparchive
extractTo()將壓縮包解壓
getStatusString()返回壓縮時的狀態內容,包括錯誤信息,壓縮信息等等
deleteIndex()刪除壓縮包中的某一個文件,如:deleteIndex(0)刪除第一個文件
deleteName()刪除壓縮包中的某一個文件名稱,同時也將文件刪除。
注意點:使用open方法的時候,第二個參數$flags是可選的,$flags用來指定對打開的zip文件的處理方式,共有四種情況
1. ZIPARCHIVE::OVERWRITE 總是創建一個新的文件,如果指定的zip文件存在,則會覆蓋掉
2.ZIPARCHIVE::CREATE 如果指定的zip文件不存在,則新建一個
3. ZIPARCHIVE::EXCL 如果指定的zip文件存在,則會報錯
4. ZIPARCHIVE::CHECKCONS
一、解壓縮zip文件
$zip=new ZipArchive;//新建一個ZipArchive的對象
if($zip->open('test.zip')===TRUE){
$zip->extractTo('images');//假設解壓縮到在當前路徑下images文件夾內
$zip->close();//關閉處理的zip文件
}
二、將文件壓縮成zip文件
$zip=new ZipArchive;
if($zip->open('test.zip',ZipArchive::OVERWRITE)===TRUE){
$zip->addFile('image.txt');//假設加入的文件名是image.txt,在當前路徑下
$zip->close();
}
三、文件追加內容添加到zip文件
$zip=new ZipArchive;
$res=$zip->open('test.zip',ZipArchive::CREATE);
if($res===TRUE){
$zip->addFromString('test.txt','file content goes here');
$zip->close();
echo 'ok';
}else{
echo 'failed';
}
四、將文件夾打包成zip文件
function addFileToZip($path,$zip){
$handler=opendir($path); //打開當前文件夾由$path指定。
while(($filename=readdir($handler))!==false){
if($filename != "." && $filename != ".."){//文件夾文件名字為'.'和『..』,不要對他們進行操作
if(is_dir($path."/".$filename)){// 如果讀取的某個對象是文件夾,則遞歸
addFileToZip($path."/".$filename, $zip);
}else{ //將文件加入zip對象
$zip->addFile($path."/".$filename);
}
}
}
@closedir($path);
}
$zip=new ZipArchive();
if($zip->open('images.zip', ZipArchive::OVERWRITE)=== TRUE){
addFileToZip('images/', $zip); //調用方法,對要打包的根目錄進行操作,並將ZipArchive的對象傳遞給方法
$zip->close(); //關閉處理的zip文件
}
3.php處理flash擴展:
ming庫:
<?php
$f = new SWFFont( '_sans' ); //創建指向一個內置字體(_sans)的指針
$t = new SWFTextField(); //創建文本欄位
$t->setFont( $f ); //設定字體
$t->setColor( 0, 0, 0 );//顏色
$t->setHeight( 400 ); //大小,
$t->addString( 'Hello World' ); //提供一些文本內容(「Hello World」)
$m = new SWFMovie(); //創建了一個 SWFMovie 對象並設定其尺寸
$m->setDimension( 2500, 800 );
$m->add( $t ); //向動畫中添加了文本元素並將動畫保存到文件中。
$m->save( 'hello.swf' ); //在本地保存為 hello.swf
?>
打開瀏覽器輸入 hello.swf 就可以看到了哦。
header( 'Content-type: application/x-shockwave-flash' );
$m = new SWFMovie();
$m->setDimension( 300, 300 );
$s = new SWFShape();
$s->setLine( 5, 0, 0, 0 );
$s->movePenTo( -100, -100 );
$s->drawLineTo( 100, 100 );
$ts = $m->add( $s );
$ts->moveTo( 150, 150 );
for( $i = 0; $i < 100; $i++ ) {
$ts->rotate( 10 );
$m->nextframe();
}
$m->save( 'rotate.swf' );
從 -100, -100 到 100, 100 畫了一條直線。這將把直線的中心放在坐標 0,0 處。這樣,當我在旋轉圖形時,直線的中心將發生旋轉。
當我向動畫中添加圖形時,將移動返回到框架中心的 SWFDisplayItem。然後用 rotate() 方法使它旋轉並每旋轉一周就增大其框架。
<?php
$img = new SWFBitmap(file_get_contents( 'megan.jpg' ));
$s = new SWFShape();
$imgf = $s->addFill( $img );
$s->setRightFill( $imgf );
$s->movePenTo( 0, 0 );
$s->drawLineTo( $img->getWidth(), 0 );
$s->drawLineTo( $img->getWidth(), $img->getHeight() );
$s->drawLineTo( 0, $img->getHeight() );
$s->drawLineTo( 0, 0 );
$m = new SWFMovie();
$m->setDimension( $img->getWidth() * 2, $img->getHeight() * 2 );
$is = $m->add( $s );
$is->moveTo( $img->getWidth() / 2, $img->getHeight() / 2 );
for( $i = 0; $i < 10; $i++ )
{
$is->skewx( 0.02 );
$is->skewy( -0.03 );
$m->nextframe();
}
$m->save( 'image.swf' );
❺ 關於PHP的zipArchive()
可能是PHP可用內存的限製造成的,把 php.ini 中的
memory_limit
這個選項的值設大一點試試看。
也可以在 php 文件中設置,比如:
ini_set('memory_limit', '32M');
補充:
32M 還不夠的話,再往上加。
嘗試用 php.ini 文件設置。
❻ php如何取消ZipArchive壓縮
試試:ZipArchive :: getStatusString 和 ZipArchive::close
不對就看文檔:PHP ZipArchive類官方文檔
❼ 怎樣用php壓縮解壓rar,zip文件
要用PHP壓縮解壓文件,常用的方法是調用命令行去執行解壓縮操作
可以用exec() 、system()等函數調用shell命令
Linux下解壓縮命令是tar [-cxtzjvfpPN] 文件與目錄,tar命令可以壓縮解壓.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、.tar.Z、.zip這些類型的文件
Linux下默認無法使用rar格式的,要另外安裝RAR for Linux,然後使用rar和unrar命令解壓縮rar格式的壓縮文件
❽ 怎麼開啟 php ziparchive
1.第一步、找到php.ini文件
2.第二部、用記事本打開
3.第三步、使用ctrl鍵+F鍵搜索 ;extension=php_zip.dll
4.第四步、去除extension前面的分號「;」,如extension=php_zip.dll
5.第五步、保存重啟Apache或其他伺服器。
❾ php ZipArchive 能否在指定目錄生成壓縮包
當然可以啊,親
下面代碼就是在/tmp目錄下生成aaaa.zip文件
$zip=newZipArchive();
$zip->open('/tmp/aaaa.zip',ZipArchive::CREATE);
$zip->addEmptyDir('dir1');
$zip->close();
❿ linux系統中PHP寫了一個解壓功能ZipArchive::extractTo():Permission denied求大家能夠協助小弟一下!
應該是你 extractTo 所指定的解壓目錄沒有許可權寫入。如果你的這個腳本是在WEB中運行,那一般是以Apache、Nobody等身份運行的,所以要檢查你的解壓目錄是否有這些用戶寫入的許可權,而且要保證該目錄的所有上級目錄都有該用戶的執行許可權(即可以cd 進去)。
為了簡單起見,你可以將這個解壓目錄放到一個大家都可寫的目錄,雖然這樣會有一些安全風險。