我试图让nightmarejs在我的centos服务器上运行,并且能够通过运行xvfb-run来实现,但我需要通过php exec()函数调用此命令。
当我这样做时,我只是得到一个空洞的结果,好像它不起作用?
当我通过命令行运行它(即xvfb-run node my-script.js)时,一切都很好。知道为什么它似乎无法工作或可用于我的PHP脚本吗?
答案 0 :(得分:0)
好的,我想通了。基本上,必须为xvfb-run授予sudo访问权限才能通过php中的可执行脚本调用它。为此,请登录终端并执行以下操作:
# sudo visudo
确保轮组未取消注释
%wheel ALL=(ALL) ALL
这意味着添加到wheel组的用户可以访问调用sudo命令
在文件底部,授予您的用户访问脚本
的权限YOUR_USER ALL = NOPASSWD: /usr/bin/xvfb-run
保存文件并将用户添加到滚轮组
usermod -aG wheel YOUR_USER
最后,从您的php脚本中,您现在可以通过sudo
调用xvfb-run<?php exec('sudo xvfb-run node my-script.js'); ?>
答案 1 :(得分:0)
尽管Cono的答案确实有用,但它的安全性较低,因为它赋予YOUR_USER访问wheel的权限,从而使YOUR_USER成为管理员。
相反,请在/etc/sudoers.d(RHEL / CentOS)中创建一个文件,其内容如下:(假定YOUR_USER是apache)
# Allow apache to run xvfb-run
Defaults:apache !requiretty
Defaults:apache visiblepw
apache ALL = NOPASSWD: /usr/bin/xvfb-run
这样,如果apache用户受到威胁,他们只能运行xvfb-run命令。
(感谢ThirdNode)