PharData限制文件名长度

Sam*_*Sam 4 php tar phar

我遇到了一个PharData和更长的FileNames的问题.我得到以下异常:

无法创建基于tar的phar \"2014-07-17-09-22-32.tar \",文件名\"XXX.99999.YYYYYYYYYYYYYYY.YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYE173-491882对于tar文件格式,xml \"太长了

(对不起,不得不加密一点^^)

现在奇怪的是,如果我从CommandLine使用这个命令,它就像一个魅力:

tar cvf foo.tar XXX.99999.YYYYYYYYYYYYYYYY.YYYYYYY.YYYYYYYYYYYYYYYYYYYYYYYYY.5f4a75e7-ee73-49f1-8a27-9440cfb35196.1405588952.xml
Run Code Online (Sandbox Code Playgroud)

我无法找到有关PharData的任何信息,其限制与TAR提供的不同.我可以为PharData使用任何选项吗?提前谢谢了!

hek*_*mgl 8

允许长度超过100个字符的文件名是tar标准的GNU扩展.(USTAR).PHP正确处理文件名.

您可以通过将-o(--old-archive)选项传递给GNU tar 来验证这一点,它会抛出一个错误:

$ tar ocvf foo.tar XXX.99999.YYYYYYYYYYYYYYYY.YYYYYYY.YYYYYYYYYYYYYYYYYYYYYYYYY.5f4a75e7-ee73-49f1-8a27-9440cfb35196.1405588952.xml
tar: XXX.99999.YYYY...588952.xml: file name is too long (max 99); not dumped
tar: Exiting with failure status due to previous errors
Run Code Online (Sandbox Code Playgroud)

我找到了以下文档:

GNU tar基于POSIX 1003.1 ustar标准的早期草案.tar的GNU扩展,例如对超过100个字符的文件名的支持,使用在该POSIX草案中指定为未使用的tar头记录的部分.POSIX的后续更改已为其他目的分配了标头记录的相同部分.因此,GNU tar与当前的POSIX规范以及跟随它的tar程序不兼容.


顺便说一句,这个限制是通过此提交添加到PHP:https://github.com/php/php-src/commit/667c59abd697d5d80cb0cadf6a5cb7d94dee3a22

提交是由于以下错误报告:https://bugs.php.net/bug.php?id = 49020