1. vi test.sh 에러발생할수있는 쉘스크립트작성
#!/bin/bash ssssssssss
2. 실행시 에러가 발생함
-------------------------------------------
[root@test]$ /bin/bash test.sh
test.sh: line 3: ssssssssss: command not found
-------------------------------------------
3. PHP에서 exec 실행시 에러 감시 불가
$outmsg = exec('/bin/bash test.sh'); echo $outmsg; exit;4. 2>&1 이용한 표준 출력의 전달되는 곳으로 표준에러를 전달
--------------------------------------------
2>&1의 의미는 표준 출력의 전달되는 곳으로 표준에러를 전달하라는 의미
2>&1의 의미는 표준 출력의 전달되는 곳으로 표준에러를 전달하라는 의미
0, 1, 2는 각각 표준입력, 표준출력, 표준에러를 의미
--------------------------------------------
$outmsg = exec("/bin/bash test.sh 2>&1", $out, $err); var_dump($out); var_dump($err); exit;
--결과물------------------------------------
array(2) {
[0]=> string(3) "111"
[1]=> string(46) "test.sh: line 3: ssssssssss: command not found"
}
int(127)
--------------------------------------------
5. proc_open 사용
$sDesc = array( 0 => array("pipe", "r"), // stdin 1 => array("pipe", "w"), // stdout 2 => array("pipe", "w") //stderr ); $oProcess = proc_open('/bin/bash test.sh', $sDesc, $aPipes, dirname(__FILE__), null); if ( is_resource($oProcess) ) { $sStdout = stream_get_contents($aPipes[1]); $sStderr = stream_get_contents($aPipes[2]); fclose($aPipes[1]); fclose($aPipes[2]); echo 'stdout : '.$sStdout; echo 'stderr : '.$sStderr; proc_close($oProcess); } else { exit('ERROR'); }
--결과물------------------------------------
stdout :
stderr : /bin/bash: test.sh: No such file or directory
--------------------------------------------
참고사이트
http://stackoverflow.com/questions/2320608/php-stderr-after-exec