개발! 딱 깔끔하고 센스있게!

Php system () / exec () 복귀 하지 않 기 본문

개발 스크랩 메모/PHP

Php system () / exec () 복귀 하지 않 기

렉사이 2020. 12. 8. 01:57

"ls" 와 같은 상용 명령 에 대해 exec () 는 정상 적 인 작업 을 하고 있 습 니 다.

예 를 들 어:

exec('ls',$output,$retval); var_dump($output,$retval); // $output contains an array of filenames, and retval === 0 

하지만 다른 프로그램 을 실행 하려 고 할 때 출력 을 가 져 올 수 없습니다:

exec('some_command --a_parameter',$output,$retval); var_dump($output,$retval); // $output contains an empty array, end $retval === 0 

그러나 이 명령 은 명령 행 에서 직접 수행 할 때 일부 행 을 인쇄 합 니 다.

명령 이 성공 했다 는 것 을 알 고 있 습 니 다.

결과 (일부 파일 갱신, 데이터 추가 등) 가 있 지만 출력 을 볼 수 없습니다.

무슨 생각 있 으 세 요?

대답 하 다.

표준 출력 이 아 닌 표준 출력 으로 경 고 를 출력 하 는 것 처럼 들린다.

exec 는 표준 출력 만 을 캡 처 할 것 입 니 다.

표준 오류 가 항상 apache 로 그 를 보 내 는 지 는 확실 하지 않 지만 가능 한 것 같 습 니 다.

비 - * nix 시스템 과 호 환 되 지 않 는 다 면 명령 에 2 > & 1 을 추가 하여 표준 오 류 를 표준 출력 으로 변경 할 수 있 습 니 다.

exec('some_command --option 2>&1', $output, $ret); 

phop 프로그램 에 대한 경 고 를 사용 할 수 있 고 로그 기록 이 불필요 하지 않도록 할 것 입 니 다.

Comments