php shell_exec()freeradius命令
我有这个问题:我想要从指令php exec()执行命令freeradius,但它不起作用。代码很简单:php shell_exec()freeradius命令
<?php
exec('radzap -x -N 192.168.0.1 localhost secret');
?>
如果我运行shell工作的代码,但到脚本PHP doeesn't工作,其他指令,如“LS”,“CD”和其他“经典”突击队工作。 我利用Fedora,也许我没有权限如何用户'阿帕奇'利用字典Freeradius。
对不起,我的英语,有什么建议吗?谢谢
更新: 错误是:
dict_init: Couldn't open dictionary "/etc/raddb/dictionary": Permission denied
好吧,我发现错误(也许),SELinux的不permict该指令的执行,如果设置了selinix permessive工作,如果是启用不起作用。 这是最后的工作,我改变了用户Httpd的文件权限和指令去。
问题不仅在于命令失败,还在于你不知道它是如何失败的。 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
。
好的,谢谢,错误si:radclient:dict_init:无法打开字典“/ etc/raddb/dictionary”:权限被拒绝 – 2013-03-14 10:19:01
谢谢,selinux无法执行此特定命令。 – 2013-03-18 11:03:12
请详细说明问题的“不工作”部分。 – 2013-03-14 09:34:08
你可以发布你正在尝试运行的php脚本吗? – 2013-03-14 09:37:09
PHP用户是否可以访问该程序? – h2ooooooo 2013-03-14 09:42:11