>백엔드 개발 >PHP 튜토리얼 >PHP 1에서 외부 쉘을 호출하는 방법 요약

PHP 1에서 외부 쉘을 호출하는 방법 요약

WBOY
WBOY원래의
2016-07-29 09:16:02981검색

php 프로그램이 안전 모드에서 실행 중일 때 php스크립트에는 다음 네 가지 제한 사항이 적용됩니다.

1) 외부 명령 실행
2) 파일 열 때 일부 제한이 있습니다
3) MySQL 데이터베이스에 연결
4) HTTP 기반 인증


안전모드에서는 특정 디렉터리에 있는 외부 프로그램만 실행할 수 있고, 다른 프로그램은

으로의 전화는 거부됩니다. 이 디렉토리는 safe_mode_exec_dir 지시문

을 사용하여 php.ini 파일에서 사용할 수 있습니다. 또는 PHP를 컴파일할 때 --with-exec-dir 옵션

지정하려면 기본값은 /usr/local/php /bin입니다.

결과를 출력할 수 있어야 하는 외부 명령을 호출하는 경우(PHP 스크립트가 정확하다는 의미), 얻는 결과는

입니다.

비어 있지만 PHP가 안전 모드에서 실행 중일 가능성이 높습니다.

이런 상황은 어떻게 대처해야 할까요?

PHP에서 외부 명령을 호출하려면 다음 세 가지 방법을 사용할 수 있습니다.

PHP는 외부 명령을 실행하는 3가지 특수 함수를 제공합니다. 명령:

system(), exec(), passthru().
system( )
프로토타입: string system(string command [, int return_var])
system() 함수는 매우 유사합니다. 다른 언어에도 거의 동일하게 주어진 명령을 실행하고 결과를 출력하고 반환합니다.

두 번째 매개 변수는 선택 사항입니다. 은 명령이 실행된 후 상태 코드를 가져오는 데 사용됩니다.

예:

코드 복사코드 다음과 같습니다:

system("/usr/local/bin/webalizer/webalizer");
?>

exec()
프로토타입: string exec(문자열 명령 [ , string array [, int return_var] ] )

exec() 함수도 system()과 유사하지만, 결과를 출력하지는 않지만 반환합니다. 결과의 마지막 줄.

명령 결과의 마지막 줄만 반환하지만 두 번째 매개변수 배열을 사용하면 완전한 결과를 얻을 수 있습니다. 방법은 to입니다. 결과는 배열 끝에 한 줄씩 추가됩니다. 따라서 배열이 비어 있지 않으면 호출하기 전에

unset()을 사용하여 배열을 지우는 것이 가장 좋습니다. 두 번째 매개변수를 지정한 경우에만 세 번째 매개변수를 사용하여 명령 실행 상태 코드를 얻을 수 있습니다.

예:


코드 복사

코드 다음과 같습니다:exec("/bin/ls -l");exec("/bin/ls -l", $res ) ;

#$res는 데이터이며, 각 요소는 결과의 행을 나타냅니다.

exec("/bin/ls -l", $res, $rc);#$rc의 값 명령은 bin/ls -l의 상태 코드입니다. 성공한 경우 대개 0입니다. 🎜>




passthru()

프로토타입: void passthru (string command [, int return_var ])

passthru()는 명령을 호출하기만 하고 결과를 반환하지 않고명령의 실행 결과를 표준으로 직접 출력합니다

🎜>

출력 장치.
그래서 passthru() 함수는 pbmplus(Unix의 이미지 처리 도구인

를 호출하는 데 자주 사용됩니다.

는 바이너리 원본 이미지 스트림을 출력합니다. )

이런 프로그램이군요. 또한 명령 실행의 상태 코드를 가져올 수도 있습니다.

예: 코드 복사

코드 다음과 같습니다:

header("콘텐츠 유형: image/gif");passthru("./ppmtogifhunte.ppm");

?>


저작권 표시: 이 글은 해당 블로거의 원본 글이므로 블로거의 허락 없이 복제할 수 없습니다.

이상으로 PHP로 외부 쉘을 호출하는 방법 1을 관련 내용과 함께 소개하였습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.