php该如何删除.git中的文件?

新手上路,请多包涵

报错如下:

unlink(C:\www\program_bulter\runtime\source\program\62fc5bba68bfd\20220818110106\source\smart_agriculture\.git\objects\pack\pack-cecd0ead167cdb95559db20cf5a039f      
  055aa1406.idx): Permission denied

我使用flysystem组件来删除本地的目录,目录下包含git clone的文件,删除.git时,会有权限不足的错误。这是为什么呢?

我运行的php用户和文件的创建者是同一个用户。
图片.png
图片.png
图片.png

而且,这些git文件就是用php的exec执行的,应该不是用户权限问题吧。

阅读 1.2k
1 个回答
新手上路,请多包涵

这个问题我已经通过其他方式解决了。

最终还是没有办法直接去删除.git下的文件。因为这些文件虽然创建者或者执行者都是同一个用户,但这个用户也是没有权限的。在资源管理器的删除应该使用的system权限才能给删除掉。

我也没有办法在windows中以管理员权限执行php,确实没有可靠的办法。

最终,我使用cmd的rd命令删除相关文件,如下:


$run_command->run(['git', 'clone', $program->git_url, 'sourcecode', '--depth=1']);

if (strpos(strtolower(PHP_OS), 'win') === 0) {
    $run_command->run(['rd', '/s', '/q', win_path($working_directory . '/sourcecode/.git/')], null, 'cmd');
} else {
    $run_command->run(['rm -rf ./sourcecode/.git']);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题