APACHE权限已全部配置但仍提示无操作权限该如何解决
这个报错的核心原因是ZipArchive生成压缩包过程中使用的系统临时目录,PHP运行用户没有读写权限,和你给目标zip存储目录赋权没有关系:ZipArchive会先在默认临时目录写缓存文件,全部处理完成后才会将最终文件写入你指定的$zipname路径。
可以按以下步骤排查修复:
- 先确认PHP的实际运行用户:执行命令
ps aux | grep php即可查看,常见的运行用户为www-data、apache、nginx - 优先推荐直接在代码中指定ZipArchive的临时目录为你已经赋过权的项目tmp目录,在
$zip->open之前添加一行代码:ini_set('sys_temp_dir', dirname(dirname(__FILE__)).'/tmp'); - 如果不想改代码,可以给系统默认临时目录授权:常见的系统临时目录为
/tmp,执行命令chown -R 你的PHP运行用户:对应用户组 /tmp即可,测试环境也可以临时执行chmod 777 /tmp验证问题 - 额外注意你的代码存在逻辑问题:
$zip->addFile("test-docs/", $testformname);中第一个参数传的是目录路径,addFile方法仅支持添加单个文件,如果你需要添加整个test-docs目录的内容,需要遍历目录逐个调用addFile添加单个文件,否则也会导致zip生成失败。
内容的提问来源于stack exchange,提问作者Amin
相关产品推荐
相关产品推荐

