这必须是重复的,但我找不到答案......
我正在编写一个php web安装脚本。我想php写一个随后是不可写的文件。是不是有某种方式来sudo fopen?
显然_www凭证不会以对目录的写访问开始,也不会以它结束。我认为安装用户,具有写访问权限的用户会将他们的凭据传递给脚本,该脚本将处理其余部分。
答案 0 :(得分:1)
大部分工作都是提供空文件,让安装人员将其编辑为chodd。
这将允许用户维护最初提供文件的用户。
Bonus是您可以编写更安全的应用程序,而不是让您的应用程序能够编写服务器。
答案 1 :(得分:1)
你不能在PHP中sudo。如果你想以root身份运行某些东西,你必须将Apache用户www
添加到sudoers文件中,这可能不是一个好主意。如果您正在编写其他人将运行的安装脚本,那么它甚至都不是一个选项。
在这种情况下,您无法在开头没有访问权限的目录中创建文件,但是在完成后可以使用chmod()
使文件成为只读文件写它。这并不意味着Apache运行的另一个脚本以后不能使用相同的函数来重新添加写属性。
最好的办法是创建需要写入的文件的空白版本。让您的脚本在开始时检查写访问权限,如果它不存在,请告诉用户他们需要做什么才能为您提供写访问权限。一旦完成,他们就可以继续了。您的脚本将编写文件,然后告诉用户他们需要做什么来删除写访问权限。您的脚本将检查发生的情况,并且在成功删除写访问权限之前不允许用户继续执行下一步。