-2

这必须是重复的,但我找不到答案...

我正在编写一个 php 网络安装脚本。我希望 php 编写一个随后将不可写的文件。没有办法sudo fopen吗?

显然 _www 凭据不会以对目录的写访问权限开始,也不会以该目录结束。我在想拥有写访问权限的安装用户会将他们的凭据传递给将处理其余部分的脚本。

4

2 回答 2

1

大多数人做的是提供空文件,让安装人员对它们进行 chmod 编写。

这将让用户维护最初提供文件的用户。

好处是您可能会编写更安全的应用程序,而不是让您的应用程序能够编写服务器。

于 2013-08-03T19:07:33.773 回答
1

您不能在 PHP 中使用 sudo。如果您想以 root 身份运行某些东西,则必须将 Apache 用户添加www到 sudoers 文件中,这可能不是一个好主意。而且,如果您正在编写其他人将运行的安装脚本,那么它甚至不是一个选项。

在这种情况下,您不能在开始时无权访问的目录中创建文件,但您可以chmod()在完成写入后将文件设为只读。这并不意味着 Apache 运行的另一个脚本以后不能使用相同的函数来重新添加写入属性。

最好的办法是创建需要写入的文件的空版本。让您的脚本在开始时检查写入权限,如果不存在,请告诉用户他们需要做什么才能授予您写入权限。一旦完成,他们就可以继续。您的脚本将写入文件,然后告诉用户他们需要做什么来删除写入权限。您的脚本将检查是否发生了这种情况,并且在用户成功删除写入权限之前不允许用户继续下一步。

于 2013-08-03T19:22:25.310 回答