我试图根据official guide从Administrator PowerShell会话中运行Phoenix演示应用程序,而我是计算机的管理员。我已经安装了所有依赖项,但是当我尝试运行mix phx.server
时,它告诉我它不能删除文件,因为它不是所有者。使用mix phx.new hello
不能完全控制它刚刚创建的文件似乎很奇怪。请参阅我的PowerShell会话的以下输出:
PS C:\users\Isaiah Nelson\Lab> cd hello
PS C:\users\Isaiah Nelson\Lab\hello> mix ecto.create
Compiling 13 files (.ex)
Generated hello app
The database for Hello.Repo has been created
PS C:\users\Isaiah Nelson\Lab\hello> mix phx.server
** (File.Error) could not remove file "c:/users/Isaiah Nelson/Lab/hello/_build/dev/lib/hello/priv": not owner
(elixir) lib/file.ex:1128: File.rm!/1
(mix) lib/mix/utils.ex:452: Mix.Utils.symlink_or_copy/2
(mix) lib/mix/project.ex:644: Mix.Project.build_structure/2
(mix) lib/mix/tasks/compile.all.ex:21: Mix.Tasks.Compile.All.run/1
(mix) lib/mix/task.ex:331: Mix.Task.run_task/3
(mix) lib/mix/tasks/compile.ex:96: Mix.Tasks.Compile.run/1
(mix) lib/mix/task.ex:331: Mix.Task.run_task/3
(mix) lib/mix/tasks/app.start.ex:58: Mix.Tasks.App.Start.run/1
此后,我尝试搜索phx.server
的Mix Task上的文档,但没有发现为什么发生这种情况的任何线索。我什至尝试将“ hello”目录所有者设置为具有完全控制权和继承权限的管理员,我的用户(Isaiah Nelson)和“每个人”,但仍然无法运行演示应用程序而没有收到此错误。这是Mix通过Powershell在Windows中创建文件的问题,还是其他Windows文件权限问题?无论哪种方式,我如何解决它都可以运行演示?
答案 0 :(得分:0)
如果没有理由以管理员身份运行phx应用,则可以递归“获取”项目所在文件夹的所有权。右键单击文件夹,然后依次单击属性>安全>高级(按钮),然后在新窗口中观察顶部的所有者,单击“更改”链接并找到并选择您的用户名。单击“确定”关闭搜索对话框,然后选择“用该对象的可继承权限条目替换所有子对象权限条目”。最后,单击“确定”(或“应用”),然后尝试在没有提升权限的情况下运行应用。
编辑
我发现,在某些情况下,从WSL以及以后的版本(不包含WSL)中编辑代码可以混合使用文件系统上的访问权限,从而导致这种或类似的行为,例如无法将文件夹移动到其他位置。如果是这种情况,那么我建议您决定在WSL或Win中开发环境在哪里。