jjzjj

php - tar 提取后,更改权限

今天只是一个关于unix和PHP的问题。我在我的PHP上所做的是使用Unix系统来解压缩压缩文件。exec("tar-xzffoo.tar.gz");通常一切正常,直到我遇到这个特定的foo.tar.gz,它有一个文件系统如下:Applications/Library/Systems/运行tar命令后,文件权限似乎更改为644(而不是755)。这会导致Permissiondenied(errno13)并因此禁用我的大部分代码。(我猜是因为缺乏特权)有什么方法可以阻止这个tar命令完全破坏我的权限?谢谢。哦,这似乎只有在我有一个具有这个特定文件系统的foo.tar.gz文件时才会发生。其

php - 在 PHP 5.3 中执行 tar.gz 操作 - CLI 与 Phar?

我需要在Apache(php5.3)上运行的php脚本中执行一些targzip操作。过去,我用过:newPharData($archivePath.'.tar');$p=$p->convertToExecutable(Phar::TAR,Phar::GZ);$p->startBuffering();但是在这种情况下,它可能必须处理1GB+文件。所以我担心php/apache过载。在那种情况下,是否最好依靠shell_exec并让操作系统承担负载? 最佳答案 我同意MarcB的观点,我会想到的主要考虑因素是:部署环境...使用Shel

php - 使用 PHP 创建 .tar.gz 文件

我正在从事的项目需要创建.tar.gz文件并将其提供给外部服务。此外部服务仅适用于.tar.gz,因此另一种类型的存档是不可能的。我正在处理的代码将执行的服务器不允许访问系统调用。所以system、exec、反引号等都不是什么好东西。这意味着我必须依靠纯PHP实现来创建.tar.gz文件。经过一些研究,PharData似乎有助于实现这一结果。但是我遇到了困难,需要一些指导。考虑以下文件夹布局:parentfolder-childfolder1-childfolder2-file1-file2我正在使用下面的代码片段创建.tar.gz存档,它可以解决问题,但最终结果有一个小问题,它不包含

php - phar 在创建 tar 存档时排除目录

我想使用内置的PharData类在PHP脚本中创建一个tar存档。我希望tar存档代表一个目录,所以我想到了使用PharData::buildFromDirectory()来做到这一点。不幸的是,该目录也是一个git存储库,其中有一个.git文件夹,它比目录本身大得多。所以我需要从存档中删除那个.git目录(最好还有.idea目录...),因为它会不必要地膨胀。到目前为止我尝试了什么:使用正则表达式过滤掉目录:$archive->buildFromDirectory("..","@^(?!.git).+@");哪个没用。使用PharData::delete(),但不幸的是,这似乎只删除

php - PharData 文件名长度限制

我遇到了PharData和更长文件名的问题。我得到以下异常:tar-basedphar\"2014-07-17-09-22-32.tar\"cannotbecreated,filename\"XXX.99999.YYYYYYYYYYYYYYYY.YYYYYYY.YYYYYYYYYYYYYYYYYYYYYYYYY.5f4a75e7-ee73-49f1-8a27-9440cfb35196.1405588952.xml\"istoolongfortarfileformat(抱歉,必须加密一点^^)现在奇怪的是,如果我从CommandLine使用这个命令,它就像一个魅力:tarcvffoo.t

php - 使用 PHP 以 tar.gz 格式动态压缩目录

我想使用PHP压缩(即时)tar.gz格式的目录。我知道可以使用exec或使用thiscode来完成(使用ZIP格式)但我的主机不支持exec并且没有安装PHP的zip扩展。在网上搜索后我发现了thisPHPcode:这确实适用于多个文件:header("Content-Disposition:attachment;filename=backup.tar.gz");header("Content-type:application/x-gzip");$getfile=file_get_contents("test.txt");echotargz('test.txt',$getfile);

java - 提取tar文件时如何检测文件权限?

使用ApacheCommonsCompress时要提取tar文件,我如何找出每个TarArchiveEntry的文件权限(读、写、可执行)? 最佳答案 TarArchiveEntry提供了一个方法“getMode()”,它返回Unix文件模式,例如TarArchiveEntryentry=input.getNextTarEntry();while(entry!=null){System.out.println("Entry:"+entry.getName()+",Mode:"+entry.getMode());entry=input

java - 如何在 java 中列出一个 tar 文件的所有条目?

我想在我的Java程序中列出一个tar文件的所有条目。这怎么可能?对于zip文件,我可以使用以下代码:ZipFilezf=newZipFile("ReadZip.zip");Enumerationentries=zf.entries();while(entries.hasMoreElements()){.....}但我不确定tar文件。有人可以帮忙吗?我正在使用org.apache.tools.tar.* 最佳答案 ApacheCommonsCompress(http://commons.apache.org/compress/)易

java - 如何使用 Apache Commons 解压 TAR 文件

我正在使用ApacheCommons1.4.1库压缩和解压缩".tar.gz"文件。我在最后一点遇到了麻烦——将TarArchiveInputStream转换为FileOutputStream。奇怪的是,它在这条线上中断了:FileOutputStreamfout=newFileOutputStream(destPath);destPath是一个具有规范路径的文件:C:\DocumentsandSettings\Administrator\MyDocuments\JavaWorkspace\BackupUtility\untarred\Test\subdir\testinsub.txt

java - 在 java (JSP) 中提取 .tar.gz 文件

我似乎无法导入所需的包或找到任何关于如何在java中提取.tar.gz文件的在线示例。更糟糕的是,我在使用JSP页面时无法将包导入到我的项目中。我将.jar复制到WebContent/WEB-INF/lib/中,然后右键单击该项目并选择导入外部jar并导入它。有时包会解析,有时则不会。似乎也无法让GZIP导入。eclipseforjsp中的导入并不像在普通Java代码中那样直观,您可以在其中右键单击已识别的包并选择导入。我尝试过Apache公共(public)库、ice和另一个名为JTar的库。Ice已导入,但找不到任何示例说明如何使用它?我想我需要先解压缩gzipped部分,然后用t