답변
당신이 tar.gz의을 만들려면 당신은 PHP의 5.3+를 사용하고, 당신은 PharData 클래스를 사용할 수 있습니다 :
$zip = new ZipArchive();
$res = $zip->open('test.zip', ZipArchive::CREATE);
$zip->addFromString('test.txt', 'file content goes here');
$zip->addFile('data.txt', 'entryname.txt');
$zip->close();
가 .gz
파일 만들기 :
.zip
파일 만들기 :
try
{
$a = new PharData('archive.tar');
// ADD FILES TO archive.tar FILE
$a->addFile('data.xls');
$a->addFile('index.php');
// COMPRESS archive.tar FILE. COMPRESSED FILE WILL BE archive.tar.gz
$a->compress(Phar::GZ);
// NOTE THAT BOTH FILES WILL EXISTS. SO IF YOU WANT YOU CAN UNLINK archive.tar
unlink('archive.tar');
}
catch (Exception $e)
{
echo "Exception : " . $e;
}
archive.tar를 해제하기 전에 파일이 아직 열려 있지 않은지 확인하십시오 - 예제를 시도하는 중에 오류가 발생했습니다 - unset ($ a) 트릭을 수행했습니다 ^^ –
악의적 인 입력으로부터 보호하는 방법에 노트 섹션에 시스템 명령 대신
http://php.net/manual/en/function.system.php
에주의를 사용합니다.
편집 : GZIP 파일을 만들 오픈() 명령 http://www.php.net/manual/en/class.ziparchive.php
고맙지 만, 많은 공유 호스팅에서 이러한 기능을 사용할 수 없기 때문에 셸에서 벗어나려고합니다. –
@ el7r 제 편집을 확인하고 작동하는지 확인하십시오. –
당신은 zip 파일을 생성하는 PHP의 Zip 클래스를 사용할 수 있으며, ZLib를 통해 새로운 우편을 만들 수 ZipArchive 클래스를 사용합니다.
$file = "test.txt";
$gzfile = "test.gz";
$fp = gzopen($gzfile, 'w9'); // w == write, 9 == highest compression
gzwrite($fp, file_get_contents($file));
gzclose($fp);
감사합니다. 작동하지만, 비슷한 방법으로 추출 할 수 있습니까? –
물론! 위에서 링크 된 문서를 살펴보십시오. – foxy
매우 간단한 방법으로 Tar-a를 만들 수 있습니다. PHP 내의 직접적인 라이브러리 - LGPL의 Dennis Wronka가 제공하는 sourceforge에서 클래스를 찾을 수 있으므로 상용 스크립트에서도 사용할 수 있습니다.
<?php
/**
* @package PHPClassCollection
* @subpackage Tar
* @link classes
* @author Dennis Wronka <[email protected]>
*/
/**
* @package PHPClassCollection
* @subpackage Tar
* @link classes
* @author Dennis Wronka <[email protected]>
* @version 1.1
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPL 2.1
*/
class tar
{
/**
* The name of the tar-file to create.
*
* @var string
*/
var $filename;
/**
* The list of files to add to the archive.
*
* @var array
*/
var $filelist=array();
/**
* Constructor
*
* @param string $filename
*/
function tar($filename)
{
$this->filename=$filename;
}
/**
* Add a file.
*
* @param string $filename
*/
function add($filename)
{
if ((file_exists($filename)) && (is_readable($filename)))
{
$this->filelist[]=$filename;
}
}
/**
* Write the tar-file.
*
* @return bool
*/
function write()
{
sort($this->filelist);
[email protected]($this->filename,'w');
if ($tarfile==false)
{
return false;
}
for ($x=0;$x<count($this->filelist);$x++)
{
$filename=$this->filelist[$x];
if ((is_dir($this->filelist[$x])) && (substr($this->filelist[$x],-1)!='/'))
{
$filename.='/';
}
while (strlen($filename)<100)
{
$filename.=chr(0);
}
$permissions=sprintf('%o',fileperms($this->filelist[$x])).chr(0);
while (strlen($permissions)<8)
{
$permissions='0'.$permissions;
}
$userid=sprintf('%o',fileowner($this->filelist[$x])).chr(0);
while (strlen($userid)<8)
{
$userid='0'.$userid;
}
$groupid=sprintf('%o',filegroup($this->filelist[$x])).chr(0);
while (strlen($groupid)<8)
{
$groupid='0'.$groupid;
}
if (is_dir($this->filelist[$x]))
{
$filesize='0'.chr(0);
}
else
{
$filesize=sprintf('%o',filesize($this->filelist[$x])).chr(0);
}
while (strlen($filesize)<12)
{
$filesize='0'.$filesize;
}
$modtime=sprintf('%o',filectime($this->filelist[$x])).chr(0);
$checksum=' ';
if (is_dir($this->filelist[$x]))
{
$indicator=5;
}
else
{
$indicator=0;
}
$linkname='';
while (strlen($linkname)<100)
{
$linkname.=chr(0);
}
$ustar='ustar '.chr(0);
if (function_exists('posix_getpwuid'))
{
$user=posix_getpwuid(octdec($userid));
$user=$user['name'];
}
else
{
$user='';
}
while (strlen($user)<32)
{
$user.=chr(0);
}
if (function_exists('posix_getgrgid'))
{
$group=posix_getgrgid(octdec($groupid));
$group=$group['name'];
}
else
{
$group='';
}
while (strlen($group)<32)
{
$group.=chr(0);
}
$devmajor='';
while (strlen($devmajor)<8)
{
$devmajor.=chr(0);
}
$devminor='';
while (strlen($devminor)<8)
{
$devminor.=chr(0);
}
$prefix='';
while (strlen($prefix)<155)
{
$prefix.=chr(0);
}
$header=$filename.$permissions.$userid.$groupid.$filesize.$modtime.$checksum.$indicator.$linkname.$ustar.$user.$group.$devmajor.$devminor.$prefix;
while (strlen($header)<512)
{
$header.=chr(0);
}
$checksum=0;
for ($y=0;$y<strlen($header);$y++)
{
$checksum+=ord($header[$y]);
}
$checksum=sprintf('%o',$checksum).chr(0).' ';
while (strlen($checksum)<8)
{
$checksum='0'.$checksum;
}
$header=$filename.$permissions.$userid.$groupid.$filesize.$modtime.$checksum.$indicator.$linkname.$ustar.$user.$group.$devmajor.$devminor.$prefix;
while (strlen($header)<512)
{
$header.=chr(0);
}
fwrite($tarfile,$header);
if ($indicator==0)
{
$contentfile=fopen($this->filelist[$x],'r');
$data=fread($contentfile,filesize($this->filelist[$x]));
while (strlen($data)%512!=0)
{
$data.=chr(0);
}
fwrite($tarfile,$data);
}
}
fclose($tarfile);
return true;
}
}
?>
- 1. MS DOS에서 Python으로 .zip 아카이브 만들기
- 2. maven "target"디렉토리의 zip 아카이브 만들기
- 3. Objective-C에서 Zip 아카이브 파일을 만들려면 어떻게해야합니까?
- 4. Django에서 동적으로 생성 된 ZIP 아카이브 서비스
- 5. PHP zip 아카이브 진행률 표시 줄
- 6. 디지털 서명 tar.gz 파일
- 7. objective-c에서 웹 아카이브 만들기
- 8. Ruby : Gzipped Tar 아카이브 만들기
- 9. zip 추출기 만들기
- 10. PHP로 동적으로 zip 만들기
- 11. 프로그래밍 방식으로 ZIP 파일 만들기
- 12. fopen() 래퍼로 ZIP 파일 만들기
- 13. 쉘 스크립트 .zip 아카이브 보관 폴더 구조 (Mac OS X)
- 14. Windows에서 작동하도록 emacs Zip 아카이브 모드를 얻는 방법
- 15. 원격 디렉토리에 hg 아카이브
- 16. Java의 국가 별 문자로 tar 아카이브 만들기
- 17. rubyzip을 사용하여 zip 아카이브 내의 디렉토리를 두 번째 zip 아카이브로 복사하는 방법은 무엇입니까?
- 18. 아카이브 이미지 파일보기
- 19. 다중 모듈 프로젝트를위한 모든 jar와 소스 jar의 아카이브 만들기
- 20. Java로 tar.gz 파일의 내용을 인쇄하는 방법은 무엇입니까?
- 21. 압축을 BZIP2 아카이브
- 22. 아카이브 컨테이너는 어떻게 작동합니까?
- 23. Joomla에서 폴더의 zip/rar/tar 만들기
- 24. 스트림 래퍼를 사용하여 zip 아카이브에 파일 만들기
- 25. 폴더에서 zip 파일 만들기 - C++에서
- 26. 프로그래밍 방식으로 Zip 파일 만들기 C++
- 27. 루트 경로를 기록하지 않고 zip 만들기; 프로그램
- 28. Cocoa 응용 프로그램에서 ZIP 보관 만들기
- 29. DotNetZip : C# 권한으로 zip 만들기 문제
- 30. PHP (PCLZIP) - URL이있는 배열에서 zip 파일 만들기?
PEAR 자료실을 찾고 있습니다. zip 및 tar 형식 용 버전이 있습니다. – mario