2011-12-15 2 views
1

나는이 system("curl command here",$output);과 같은 컬 명령을 실행하는 PHP 함수를 system() 사용하고 있지만 화면에 결과를 표시합니다. 이 출력을 피하는 방법은 없습니까?system() 함수가 브라우저에서 출력을 인쇄하지 못하게하는 방법은 무엇입니까?

+0

어쩌면'사용 @'그것의 앞에 사용해야합니까? '@ system' –

+0

정확히 달성하려는 것은 무엇입니까? 당신이 참조하는 문서들에 따르면 PHP에서'system()'을 보통 사용하는 것입니다 (즉, 명령을 실행하고 "_display the output_"). 그렇습니다. 주위에는 여러 가지 방법이 있지만,'system()'을 포함하지 않는 문제에 적절한 세분화 된 접근법이있을 수 있습니다. – pilcrow

+2

@Shvelo 그게 출력되지, 오류를 억제. – Wiseguy

답변

3

출력 버퍼링을 사용해보십시오. 더 우아하게 - -

ob_start(); 
system("curl command here",$output); 
$result = ob_get_contents(); 
ob_end_clean(); 
1

당신은 "1>을/dev/null 2> & 1"또는 명령 문자열을 수정하고 추가 할 수 중 하나 pipe하여 프로세스를 실행합니다 (예 : 2).

프로세스의 파일 핸들을 좀 더 세부적으로 제어하려면 proc_open()을 사용할 수도 있습니다.

5

잘못된 기능을 사용하고 있습니다. 문서에 따르면 :

system()은 주어진 명령을 실행하고 결과를 출력한다는 점에서 함수의 C 버전과 같습니다.

그래서 항상 출력됩니다. 당신 때문에,

ob_start(); 
system("curl command here", $status); 
$output = ob_get_clean(); 
1

system 기능은 명령의 출력을 표시

$last = exec("curl command here", $output, $status); 
$output = implode("\n", $output); 

또는 output buffering­Docs 사용 (단지 완전성) : 프로그램의 출력을 반환 (그리고 출력) 않는 대신 exec­Docs를 사용하여 거기에서 운이 없어.

systemexec으로 변경하십시오. 이 함수는 명령의 출력을 표시하지 않습니다.

1

아니, 당신은 PHP curl library

+0

잘 서버에서 루트로 실행되는 백엔드 스크립트를 코딩 할 때 강제로 사용해야합니다. 실행중인 서버는 cURL이 비활성화 된 sandbox와 같으며 socket_create()가 제대로 작동하지 않습니다. – Steve

+0

이상하게 들리면 루트 액세스 권한이 있고 컬링을 사용할 수 없습니까? – ajreal

+0

또한, 백엔드 스크립트로 PHP를 실행 ... 그건 얼마나 시끄러운 상관 없습니다 (당신이 어쨌든 실시간으로 볼 가능성) – ajreal

관련 문제