我现在正在从亚马逊网络服务下载一个tar.gz文件到我的本地机器上。我想要解压缩它,然后解压缩以读取内容。使用文件位置创建新的PharData对象时出现错误:
Fatal error: Uncaught exception 'UnexpectedValueException' with message
'unable to create temporary file for decompression of gzipped phar archive
"/Applications/XAMPP/xamppfiles/htdocs/NB/admin/temp/ea975d07f1-response.tar.gz"'
in /Applications/XAMPP/xamppfiles/htdocs/NB/admin/mcAdvanced.php:28 Stack trace: #0
/Applications/XAMPP/xamppfiles/htdocs/NB/admin/mcAdvanced.php(28):
PharData->__construct('./temp/ea975d07...') #1 {main}
thrown in /Applications/XAMPP/xamppfiles/htdocs/NB/admin/mcAdvanced.php on line 28我的php代码是:
file_put_contents("./temp/ea975d07f1-response.tar.gz", fopen($response_body_url, 'r'));
$phar = new PharData('./temp/ea975d07f1-response.tar.gz'); //Error here-line28我认为权限是正确的。我可以手动解压和查看。有人有什么建议吗?
谢谢!

发布于 2017-02-08 00:39:25
您的the服务器需要对操作系统的$TEMP目录具有写访问权限,才能解压缩PHAR文件。
使用sys_get_temp_dir查看这是什么目录,以便您可以应用正确的权限。
或者,您可以指定一个不同的目录,您的temp服务器已有权将其用作PHP的临时目录。
发布于 2020-01-24 01:31:19
当使用压缩phar归档文件时,这是一个常见的问题,因为压缩文件的大小很小。该错误源于https://github.com/php/php-src/blob//ext/phar/phar.c#L2552,它似乎是在php_stream_fopen_tmpfile()失败时触发的,这只是_php_stream_fopen_temporary_file的一个别名。这个调用失败的原因目前还不清楚。使用sys_get_temp_dir显示temp位于/tmp,它具有正确的权限(1777)和足够的空间。
此问题的解决方法是不压缩归档文件。我认为这不是一个很好的答案,然而,这在phar是一个长期存在的问题,我不会屏息等待近期的解决方案。
发布于 2016-05-19 11:50:46
哪个用户运行Apache进程?使用exec('whoami')进行测试。我猜这只是$_SERVER["APP_POOL_ID"]的权限问题。授予对此标识的读写权限。
https://stackoverflow.com/questions/37313455
复制相似问题