2014-12-14 2 views
0

내 사용자 중 하나가 PHP exec() 사양을 따르지 않는 이상한 행동을하고 있습니다.PHP의 exec() 인쇄 출력 - 사양을 따르지 않는 것 같습니다

exec($cmd, $out, $ret); 

내가이 출력을 생성하지 기대하지만, 사용자가 인쇄 $cmd에서 오류 스택 추적을 볼 때이 오류 아웃 :

나는과 같이 호출하고 있습니다. 내 코드에서 아무것도 출력하지 않으므로 exec()에서 나오게된다. 그러나 어떻게? 문서를 잘못 해석합니까?

출력 버퍼의 내부에이 트랩을 처리 한 다음 처리하는 것이 좋겠지 만, 나는 그것을 막을 것입니다. 그리고 내가하는 일이 무엇인지, 왜 이것이 먼저 일어나는지 이해하고 싶습니다.

참고 : PHP 버전 및 기타 사용자에 대한 자세한 정보는 제공하고 있지만 현재로서는 해당 정보가 없습니다. 제가 말할 수있는 것은 그것이 5.2.4 이상이라는 것입니다.

명령은 항상 출력 파이프가 실행 : 표준을 밖으로 오류가 발생할 무엇

답변

2

은 일반 유닉스 동작입니다. 설명서에는 모든 출력이 다시 제공됨이 나와 있습니다. 그건 이 아니고에는 오류 출력에 쓰여진 내용이 포함되어 있습니다. 그것은 별도의 파이프 py 목적을 사용하여 오류와 정상 출력을 구분합니다. 캡쳐하고 싶다면 실행 명령을 변경해야합니다. 일반적으로 2>&1을 추가하여 오류 출력을 표준 출력에 매핑합니다.

+0

Ah-ha! 흥미 롭 군. PHP가 조금 더 나아 졌다는 것을 증명할 수있는 것 같지만, 이제는 그렇게 말하는 것이 완벽합니다. – Dan

관련 문제