我正在为 PrestaShop 开发一个插件,它可以工作,但问题在于它的自动更新。有时由于权限问题,它在客户服务器上失败。
该插件以 zip 格式下载(使用 php/curl),然后通过 php 脚本解压缩为 plugin_temp,然后重命名为plugin。正如我在这个过程中被告知的那样,要么权限发生变化,要么所有权发生变化。
处理此类更新的正确方法是什么?是否应该将 zip 解压缩到 /tmp ?我猜测,由于大量网络应用程序都有自动更新插件,因此必须有某种标准程序。
谢谢
答案1
两个答案:
- zip 文件不存储 Unix 所有者或权限信息。请改用 tar 文件。
Stack Overflow 上有几个关于此主题的问答,包括:
https://stackoverflow.com/questions/10735297/maintain-file-and-folder-permissions-inside-archives
- 处理更新的正确方法是编写用户可以上传并从 ssh 会话运行的安装程序脚本 - 网站不应具有覆盖自己的脚本文件(或 .htaccess 文件,或添加新的可执行文件)的权限脚本等)。我意识到这对于许多网络托管服务来说可能很困难或不可能,但重要的是要认识到这是一个巨大的安全漏洞。