如果服务器上的PHP脚本无法创建目录,这通常是因为PHP是以apache / nobody运行的吗?那么你能否说服务器配置错误? (或仅使用标准配置)
出于安全考虑,如果php作为用户运行会更好,如果是,那么这个问题(需要777)是否还会发生?我不这么认为,但我想我会问......
答案 0 :(得分:2)
IMO你永远不应该拥有777目录。在没有用户的网络服务器上这并不重要,但它永远不是必需的,无论如何都应该避免。
debian上的PHP作为与apache相同的用户和组运行(www-data)。因此,您只需配置文件访问控制以允许该用户执行您喜欢的操作。你永远不需要777.
其他发行版具有类似的配置,但您始终可以编辑 apache2.conf 和 php.ini 文件以获得所需的任何结果。
答案 1 :(得分:2)
那么你能否说服务器配置错误?
不。这就是它应该是的样子。由apache执行的php脚本以用户www-data
运行(在Ubuntu上)。 www-data
几乎没有整个服务器的写权限。这就是它应该是的样子。如果您编写一个稍微不安全的PHP脚本(例如易受code injection影响)并且它以root身份运行,则恶意访问者可能会清除整个硬盘驱动器。
出于安全考虑,如果php以用户身份运行会更好吗?
用户是什么意思?如果它是root,请参见上文。如果是具有root权限的用户,请参阅上文。
这个问题(需要777)是否仍会发生?
问题是您正在使用需要在外部目录上完全读取,写入和执行权限的代码。
如果它是一个只供您的脚本使用的目录,www-data
应该拥有它。问题解决了。
如果您使用的PHP脚本必须能够访问敏感系统区域,您可能需要重新考虑这样做的方式。 php脚本应该执行的许多任务可以由脚本调度,稍后由cron作业执行。
最后但并非最不重要的是,如果你绝对必须,你可以像任何你想要的用户一样运行php。只需安装模块mpm_itk_module
并添加
AssignUserId user group
在<VirtualHost>
标记内。
但请注意 - 正如我之前所说 - 使用错误的脚本和错误的权限,可能会发生非常糟糕的事情(TM)。