PHP shell_exec () 대 exec ()
와의 차이점을 이해하기 위해 고심 shell_exec()
하고 있습니다 exec()
...
exec()
서버 측 명령을 실행 하는 데 항상 사용 shell_exec()
했습니까?
가 shell_exec()
단지 속기 exec()
? 더 적은 매개 변수를 가진 동일한 것으로 보입니다.
shell_exec
모든 출력 스트림을 문자열로 반환합니다. exec
기본적으로 출력의 마지막 줄을 반환하지만 모든 출력을 두 번째 매개 변수로 지정된 배열로 제공 할 수 있습니다.
보다
차이점은 다음과 같습니다. 마지막 줄 바꿈에 유의하십시오.
> shell_exec('date')
string(29) "Wed Mar 6 14:18:08 PST 2013\n"
> exec('date')
string(28) "Wed Mar 6 14:18:12 PST 2013"
> shell_exec('whoami')
string(9) "mark\n"
> exec('whoami')
string(8) "mark"
> shell_exec('ifconfig')
string(1244) "eth0 Link encap:Ethernet HWaddr 10:bf:44:44:22:33 \n inet addr:192.168.0.90 Bcast:192.168.0.255 Mask:255.255.255.0\n inet6 addr: fe80::12bf:ffff:eeee:2222/64 Scope:Link\n UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1\n RX packets:16264200 errors:0 dropped:1 overruns:0 frame:0\n TX packets:7205647 errors:0 dropped:0 overruns:0 carrier:0\n collisions:0 txqueuelen:1000 \n RX bytes:13151177627 (13.1 GB) TX bytes:2779457335 (2.7 GB)\n"...
> exec('ifconfig')
string(0) ""
백틱 연산자의 사용법 은과 동일합니다 shell_exec()
.
업데이트 : 마지막으로 설명해야합니다. 몇 년 후이 답변을 보면 왜 그것이 비 었는지 모르겠습니다! Daniel은 위에서 설명했습니다 exec
. 마지막 줄만 반환 하기 때문에 ifconfig
마지막 줄은 비어 있습니다.
shell_exec
-쉘을 통해 명령을 실행 하고 완전한 출력을 문자열로 반환
exec
-외부 프로그램을 실행하십시오.
차이점은 shell_exec
출력을 반환 값으로 얻는다 는 것입니다 .
여기서 다루지 않은 몇 가지 차이점 :
- exec ()를 사용하면 선택적 출력 변수를 전달할 선택적 param 변수를 전달할 수 있습니다. 경우에 따라 특히 명령 출력이 이미 테이블 형식 인 경우 시간을 절약 할 수 있습니다.
비교:
exec('ls', $out);
var_dump($out);
// Look an array
$out = shell_exec('ls');
var_dump($out);
// Look -- a string with newlines in it
반대로, 명령의 출력이 xml 또는 json 인 경우 입력을 다른 형식으로 후 처리해야하므로 각 행을 배열의 일부로 갖는 것은 원하는 것이 아닙니다.이 경우 shell_exec를 사용하십시오. .
shell_exec는 * nix에 사용 된 백틱 연산자의 별명임을 지적 할 가치가 있습니다.
$out = `ls`;
var_dump($out);
exec는 실행 된 명령의 리턴 코드를 제공하는 추가 매개 변수도 지원합니다.
exec('ls', $out, $status);
if (0 === $status) {
var_dump($out);
} else {
echo "Command failed with status: $status";
}
shell_exec 매뉴얼 페이지에 언급 된 것처럼 실제로 실행중인 명령에서 리턴 코드가 필요한 경우 exec를 사용할 수 밖에 없습니다.
참고 URL : https://stackoverflow.com/questions/7093860/php-shell-exec-vs-exec
'Programing' 카테고리의 다른 글
.NET Core, .NET Framework 및 Xamarin의 차이점은 무엇입니까? (0) | 2020.03.07 |
---|---|
파이썬에는 어떤 SOAP 클라이언트 라이브러리가 존재하며 어디에 문서화되어 있습니까? (0) | 2020.03.07 |
$ HOME 폴더에 pip 패키지 설치 (0) | 2020.03.07 |
XPath를 사용하여 속성 얻기 (0) | 2020.03.07 |
C #에서 부울 유형과 부울 유형의 차이점은 무엇입니까? (0) | 2020.03.07 |