php shell_exec()freeradius命令

时间:2013-03-14 09:32:32

标签: php exec radius freeradius

我有这个问题:我想从php exec()指令执行命令freeradius,但它不起作用。代码很简单:

<?php
    exec('radzap -x -N 192.168.0.1 localhost  secret');
?>

如果我在shell工作中运行代码,但进入脚本php不起作用,其他指令如“ls”,“cd”和其他“经典”突击队工作。 我使用Fedora,也许我没有权限用户'Apache'如何使用字典Freeradius。

对不起我的英文,有什么建议吗?感谢

更新: 错误是:

 dict_init: Couldn't open dictionary "/etc/raddb/dictionary": Permission denied 

好的,我发现错误(可能),selinux不会执行此指令,如果我设置selinix渗透工作,如果启用不起作用。 它终于工作了,我改变了用户Httpd的文件权限和指令。

1 个答案:

答案 0 :(得分:0)

问题不仅在于命令失败,而在于你不知道它是如何失败的。 exec()本身不会提供大量信息,因此您需要捕获命令输出(包括标准错误):

$output = array();
$retcode = 0;
exec('radzap -x -N 192.168.0.1 localhost  secret 2>&1', $output, $retcode);
echo "Return code: $retcode\n";
print_r($output);

这为您提供了命令的返回代码和输出,使您可以查看命令失败的原因。有太多可能的问题可以给你一个具体的答案。

话虽如此,命令失败的最常见原因是由于$ PATH环境变量而无法找到二进制文件。尝试在exec中指定radzap的绝对路径,例如/usr/bin/radzap