我发现,如果使用PHP 5.6到PHP 7.3进行压缩,则无法还原PHP脚本生成的zip文件以执行。用于运行PHP脚本的ZIP文件恢复/解压缩功能仅在PHP脚本在PHP 5.5下压缩时有效。
在使用ZipArchive函数进行测试时,我发现在PHP 5.5中,所有文件权限均设置为0644。原始文件权限是否设置为0666或0444或任何其他值都没有关系。解压缩文件时,权限将设置为0644。
然后我用PHP 5.6进行了测试,并尝试压缩和解压缩权限为0644或0444的文件。将其权限解压缩为0666时。
在我和其他服务器上解压缩后,用PHP 5.6到7.3版压缩的PHP程序将无法工作,除非我手动将所有文件权限更改为0644并将所有目录权限更改为0755。将文件权限设置为0666,这将阻止它们被执行-解压缩的php文件将不会运行。我在http://drpetersnews.com/php-zip-archive-not-working-apache-server-hard-disk-full-problems.php上写了更多有关此的内容,并在https://bugs.php.net/bug.php?id=69536上向PHP开发人员报告了此内容。
实际上,如果我们作为PHP脚本开发人员,使用ZipArchive函数设置文件和目录权限,则ZipArchive可以正常工作。例如,添加了PHP语句:
$zipArchive->addFile('atestzip.php', 'atestzip.php', 0644);
$zipArchive->addEmptyDir ( string $dirname, 0755 );
There could be a way to create default settings for directory and file permissions:-
$zipArchive->setpermissions ( 0755, 0644 );
我喜欢使用ZipArchive函数,并且有很多生成zip文件的PHP代码。当我尝试在zip文件中查找内容时,使用Windows资源管理器搜索zip文件的内容非常容易。此外,我在压缩文件中发布了许多PHP代码,但不幸的是,由于ZipArchive在更高版本的PHP上无法正常工作,因此我无法迁移到PHP 5.6或更高版本。因此,我现在坚持使用PHP 5.5。
我仍然相信压缩文件是一个很好的产品,非常易于使用和分发。
你们能帮助我让PHP开发人员升级PHP,以便所有版本的5.6到7.3的PHP都能以正确的权限压缩zip文件吗?