php - exec问题

时间:2011-07-25 04:45:32

标签: php exec

我正在建立一个新的服务器,当然我没有记录我对最后一个所做的每一个改变,但是我到了那里。

我有一个奇怪的问题,我正在尝试在php中进行简单的调用:

exec('service httpd reload');

它没有做任何事情。我可以执行其他命令,如tar,我确实检查了php.ini的disabled_functions,它是空的。用于创建文件/文件夹的用户名是“apache”。

有谁知道我可以查看的其他任何区域?这是php 5.2.x的全新安装,因此我确信apache中存在安全设置或阻止此操作。

2 个答案:

答案 0 :(得分:1)

你的apache很可能是在普通用户帐户下运行的(www-data或apache - 这取决于你的发行版),但要重新启动apache(或任何其他服务)你必须是的

您可以使用sudo来提升您的权限。

答案 1 :(得分:1)

您不能以普通用户身份重启Apache,但是永远不会将您的root密码写入文件中。如果你真的必须从php运行该命令,那么还有另一种方法。

您可以允许某些用户以root用户身份运行某些命令,而无需指定密码。为此,您必须使用/etc/sudoers编辑visudo文件,并将标记NOPASSWD添加到要运行的命令中。以下是手册页中的示例:

ray    rushmore = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm

这将允许用户光线在机器rushmore上以root身份运行/ bin / kill,/ bin / ls和/ usr / bin / lprm而无需验证自己。