Linux 如何通过php脚本执行终端命令

Linux 如何通过php脚本执行终端命令,linux,php,sudo,Linux,Php,Sudo,我有一个php脚本,需要它来运行linux终端命令。我的问题是我需要以sudo的身份运行它,但它不起作用。我已完成VISUDO并添加/禁用如下: asterisk ALL=NOPASSWD: /usr/sbin/cmd.php Defaults!/usr/sbin/cmd.php !requiretty #Defaults requiretty #Defaults !visiblepw 但我在apache日志“sudo:no tty present and no askpass pr

我有一个php脚本,需要它来运行linux终端命令。我的问题是我需要以sudo的身份运行它,但它不起作用。我已完成VISUDO并添加/禁用如下:

asterisk ALL=NOPASSWD: /usr/sbin/cmd.php
Defaults!/usr/sbin/cmd.php !requiretty
#Defaults    requiretty
#Defaults   !visiblepw
但我在apache日志“sudo:no tty present and no askpass program specified”中发现了这个错误。仅供参考,Apache以用户asterisk及其Centos 6的身份运行。我现在被困在这里,无法伸出援手


谢谢

您的星号帐户没有shell登录。sudo用户必须具有shell登录名。签入/etc/passwd。如果nologin,则表示无法访问shell。

您需要检查asterisk API,它是调用AMI(asterisk管理接口)

您正试图运行的命令是否准确“/usr/sbin/cmd.php”?我在过去使用php或添加nice时遇到过问题。哦,你在auth.log中有没有任何错误?我只是在做“服务星号停止”来检查这个概念。我检查了安全日志,它显示“sudo:pam_unix(sudo:auth):对话失败sudo:pam_unix(sudo:auth):auth无法识别[asterisk]的密码”。嗯,我想我的asterisk用户有密码,现在最好的做法是什么?哦。。。使用visudo,您应该指定要运行的命令,而不是运行itasterisk ALL=NOPASSWD:service asterisk stop的脚本