2016-11-28 5 views
0

Linux에서 OS 명령을 실행하기 위해 PHP 패스 스루 기능을 사용하려고합니다.PHP 패스 스루 실행 상태

다음과 같이 사용하고 있습니다. 리눅스 명령은 내가 존재하지 않는 알고 나는 그냥 확인이 상태가 명령의 전체 출력 될 것으로 보인다 그러나 0

$osexec = "ls /tp"; 
$status = 0; 

$result = passthru($osexec, $status); 

echo $status; 

아닙니다 확인하기 위해 상태를 반향 오전 디렉토리에있는 파일을 나열하는 단지입니다 상태 번호 포함

ls: /tp: No such file or directory 
2 

왜 그런가요?

답변

1

stderr 더하기 $status 값이 표시됩니다. stderr을 숨기려면 다음을 수행 할 수 있습니다.

// 2> /dev/null to hide stderr 
$osexec = "ls /tp 2> /dev/null"; 
$status = 0; 

$result = passthru($osexec, $status); 

echo $status; 
+0

고맙습니다. 의도적으로 전체 출력을 포함하고 있습니다. – Trent

0

passthru는 사용자 명령에서 모든 출력을 자동으로 출력합니다.

try echo "-------\n".$status; 그리고 다른 소스 (패스 스루/에코)의 일부 출력이 섞여있는 것을 볼 수 있습니다.

관련 문제