2011-09-27 3 views
0

내 코딩은 지금까지 :PHP에서 시스템 명령어를 통해 exec()를 대체하는 방법은 무엇입니까?

어떻게 exec()을 PHP의 시스템 명령으로 바꾸시겠습니까?

if($str!="success") 
{ 
    $cmd = "rm -rf /portal/data/config/certificate/tmp/"; 
    $error_text="Command : ".$cmd; 
    AddLog("sslconfig.php",$error_text,ERR_DEBUG_HIGH); 
    $output = exec($cmd,$array1,$error_code); 
    $error_text="Error code : ".$error_code; 
    AddLog("sslconfig.php",$error_text,ERR_DEBUG_HIGH); 
    seterror('0:|: :|: Could not apply certificate.'); 
    $error_text="Could not apply certificate"; 
    AddLog("sslconfig.php",$error_text,ERR_INFO); 
    header("Location: ssl.php"); 
    exit; 
} 

if($certName==$cert_auth) 
{ 
    //copy the applied certificate to fireballbundle.crt 
    //$output = copysslfb("/portal/data/config/certificate/".$newfile.".crt"); 
    $error_text="Selfsigned Certicate"; 
    AddLog("sslconfig.php",$error_text,ERR_DEBUG_HIGH); 
    $output="success"; 
} 
else 
{ 
    $error_text="Not Selfsigned Certicate"; 
    AddLog("sslconfig.php",$error_text,ERR_DEBUG_HIGH); 
    $output="success"; 
} 

if($output!="success") 
{ 
    $cmd = "rm -rf /portal/data/config/certificate/tmp/"; 
    $error_text="Command : ".$cmd; 
    AddLog("sslconfig.php",$error_text,ERR_DEBUG_HIGH); 
    $output = exec($cmd,$array1,$error_code); 
    $error_text="Error code : ".$error_code; 
    AddLog("sslconfig.php",$error_text,ERR_DEBUG_HIGH); 
    $error_text="Could not add certificate to fireballbundle.crt : ".$output; 
    AddLog("sslconfig.php",$error_text,ERR_ERROR); 
    seterror('0:|: :|: Error in applying certificate.'); 
    header("Location: ssl.php"); 
    exit; 
} 

는 지금은 시스템 명령으로 exec 명령을 대체하려면? 코드 위와 같이 내가 세 번 여기 exec()을 사용하고

는 지금은 하나의 파일을 제거하려면 unlink을 사용해야하고 당신이해야 디렉토리를 제거

exec("hostname",$retval); 
$output = exec($cmd,$array1,$error_code); 
exec($cmd,$array1,$error_code); 

답변

2

PHP에서 system() 명령으로 대체 할 rmdir을 사용하십시오. 해당 페이지에 대한 의견에서는 이러한 기능을 통해 rm -rf을 에뮬레이션하는 방법에는 여러 가지가 있습니다.

당신은 가능한 한 많은 system 또는 exec을 사용하지 않아야합니다. 항상 php.net에보고 당신이 내장 함수 또는 라이브러리와 함께 할 노력하고 무엇이든 할 수있는 방법을 찾을 수 있는지 확인하기 위해 구글. 여기에 이러한 시설을 사용할 필요가 없습니다. 당신은 아마 대신에 대한 $_SERVER['SERVER_NAME']를 사용한다 무엇 hostname 반환

.

+0

:)이 내 ANS – John

+0

하지 않습니다 :) 나는 또한 나의 코딩에 해제 사용하고 – John

관련 문제