PHP shell_exec() vs 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) ""
backtick 연산자의 사용은 와 동일합니다.
업데이트: 마지막 하나를 설명해야 합니다.몇 년이 지난 지금 이 답을 보면 왜 아무것도 안 나왔는지 나도 모르겠어!대니얼이 위에서 설명했잖아요exec
는 마지막 행만 반환합니다.ifconfig
의 마지막 행이 공백입니다.
shell_exec
- 셸을 통해 명령어를 실행하여 출력 전체를 문자열로 반환
exec
- 외부 프로그램을 실행합니다.
다른 점은 와의 차이점이다.shell_exec
반환값으로 출력됩니다.
여기서 다루지 않은 몇 가지 차이점:
- exec()을 사용하면 출력행 배열을 수신하는 선택적 매개 변수를 전달할 수 있습니다.경우에 따라서는 특히 명령어의 출력이 이미 표 형식으로 되어 있는 경우 시간을 절약할 수 있습니다.
비교:
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에 사용되는 backtic 연산자의 에일리어스입니다.
$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' 카테고리의 다른 글
PHP 알림을 해제하려면 어떻게 해야 합니까? (0) | 2023.01.20 |
---|---|
안드로이드 캔버스에 채워진 삼각형을 그리는 방법은? (0) | 2023.01.20 |
프로그램 실행 시간을 계산하는 방법은 무엇입니까? (0) | 2023.01.20 |
다음 항목 중 하나가 목록에 있는지 확인하는 방법은 무엇입니까? (0) | 2023.01.20 |
JavaScript 배열에서 임의 항목 가져오기 (0) | 2023.01.20 |