簡體   English   中英

php shell_exec()freeradius命令

[英]php shell_exec() freeradius command

我有這個問題:我想從php exec()指令執行命令freeradius,但它不起作用。 代碼很簡單:

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

如果我在外殼程序中運行代碼,但在php腳本中卻不起作用,則其他指令(如“ ls”,“ cd”和其他“經典”突擊隊)也可以工作。 我使用Fedora,也許我沒有權限用戶“ Apache”如何使用字典Freeradius。

對不起,我的英語,有什么建議嗎? 謝謝

更新:錯誤是:

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

好的,我發現了錯誤(也許),如果我設置了selinix滲透性工作,則selinux不會阻止該指令的執行,如果啟用,則不能工作。 終於可以了,我更改了用戶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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM