Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何以root用户身份运行php fpm_Linux_Php - Fatal编程技术网

Linux 如何以root用户身份运行php fpm

Linux 如何以root用户身份运行php fpm,linux,php,Linux,Php,我知道以root用户身份运行php fpm的风险。 然而,在某些情况下,人们需要这样做,比如电器, 访问操作系统资源,甚至出于测试目的 我已尝试将php-fpm.d/www.conf的用户和组更改为root 当我重新启动php fpm进程时,它会引发一个错误: Starting php-fpm: [26-Jun-2014 00:39:07] ERROR: [pool www] please specify user and group other than root [26-Jun-2014 0

我知道以root用户身份运行php fpm的风险。 然而,在某些情况下,人们需要这样做,比如电器, 访问操作系统资源,甚至出于测试目的

我已尝试将php-fpm.d/www.conf的用户和组更改为root 当我重新启动php fpm进程时,它会引发一个错误:

Starting php-fpm: [26-Jun-2014 00:39:07] ERROR: [pool www] please specify user and group other than root
[26-Jun-2014 00:39:07] ERROR: FPM initialization failed
[FAILED]

我该怎么办。有人帮忙吗?

更新2018

在容器中运行它可能是以root身份运行
php fpm
的有效原因。可以通过将
-R
命令行参数传递给它来完成


原始答复:

然而,在某些情况下,用户可能需要这样做,比如设备,访问操作系统资源

你永远不需要这样做。就这样。如果您正在管理系统资源,请将php fpm用户的权限授予该资源,而不是以root用户身份运行整个流程。如果您的问题更具体,我可以向您展示在特定情况下如何做到这一点。

请参阅:

# php-fpm --help
...
 -R, --allow-to-run-as-root
               Allow pool to run as root (disabled by default)

我不知道你说的“链接”是什么意思。我提供了一个shell命令供参考,并提供了结果输出的相关部分。如果命令的输出发生更改,那么结果的相关部分将不同,这正是您希望看到的(例如,-R可能不再允许池以root身份运行)。也许我不太清楚这是一个shell命令,但这种格式是指示bash命令的标准符号。如果有人想用配置运行它,使用
-y
php fpm-y/etc/php-fpm.conf-R
将使用您现有的配置并在后台启动守护程序。这不是问题的有效答案。有些时候,php fpm应该被授予根权限。例如,我在NAT后面设置了一个单用户linux VM(所有端口转发仅从我的环回适配器完成)。此VM与Win32 VM主机共享DIR,共享资源的实用程序要求linux来宾操作系统上的所有文件都归root:root所有。唯一的解决方案是php5 fpm也以root用户身份运行,以便能够读取/写入共享位置中的文件/目录。这是一个以root身份运行php5 fpm的非常好的用例。与“我做了
chown-R root:root/
,现在vim只能以root身份运行”一样。@Sam:有时候“如何做X?”的最佳答案是“永远不要做X!”。考虑一下在BCPL中编写一个会计包之类的事情。或COBOL中的操作系统。或者几乎所有的Perl语言(pax ducks作为掩护)。以root用户身份运行大量复杂的进程是一个极其糟糕的主意。如果进程需要一些超能力,那么让它执行一个非常严格控制的可执行文件,而这个可执行文件可以代替它(这就是它所能做的)。锁定一个小的、严格控制的可执行文件要比锁定一个巨大的庞然大物容易得多。Re:“永远不要做X!”我相信这有时是有效的,但在这种情况下,所讨论的实用程序提供了一个名为
--allow to run as root
的命令行标志,投票率最高的答案是正确的,应该被接受。@hek2mgl我的特定用例是一个docker容器,php fpm需要在其中写入装入的目录。可能还有其他的。同样,如果实用程序公开了一种这样做的方法,为什么这不是公认的答案呢?