복붙노트

PHP exec () vs system () vs passthru ()

PHP

PHP exec () vs system () vs passthru ()

차이점은 무엇입니까?

각 기능에 대한 구체적인 상황이나 이유가 있습니까? 그렇다면 그러한 상황에 대한 몇 가지 예를 들려 줄 수 있습니까?

PHP.net은 외부 프로그램을 실행하는 데 사용된다고 말합니다. 참조를 참조하십시오 내가 본 예들에서 나는 분명한 차이점을 보지 못했다.

단순히 스크립트 (bash 또는 python)를 실행하는 경우, 어떤 함수를 사용하도록 권합니까?

해결법

  1. ==============================

    1.그들은 약간 다른 목적을 가지고 있습니다.

    그들은 약간 다른 목적을 가지고 있습니다.

    어쨌든, 나는 그 중 하나를 사용하지 말 것을 제안합니다. 그것들은 모두 매우 이식 불가능한 코드를 생성합니다.

  2. ==============================

    2.http://php.net/ && Chipmunkninja에서 가져온 내용 :

    http://php.net/ && Chipmunkninja에서 가져온 내용 :

  3. ==============================

    3.이전의 대답은 모두 약간 혼란 스럽거나 불완전한 것으로 보였으므로 여기에 차이점의 표가 있습니다 ...

    이전의 대답은 모두 약간 혼란 스럽거나 불완전한 것으로 보였으므로 여기에 차이점의 표가 있습니다 ...

    +----------------+-----------------+----------------+----------------+
    |    Command     | Displays Output | Can Get Output | Gets Exit Code |
    +----------------+-----------------+----------------+----------------+
    | system()       | Yes (as text)   | Last line only | Yes            |
    | passthru()     | Yes (raw)       | No             | Yes            |
    | exec()         | No              | Yes (array)    | Yes            |
    | shell_exec()   | No              | Yes (string)   | No             |
    | backticks (``) | No              | Yes (string)   | No             |
    +----------------+-----------------+----------------+----------------+
    

    알고 있어야 할 기타 사항 :

  4. ==============================

    4.명령이 반환 할 수있는 출력을 처리하는 방법과 PHP 스크립트가 호출 수신자 프로그램이 끝날 때까지 기다리는 지 여부에 관한 내용이 있습니다.

    명령이 반환 할 수있는 출력을 처리하는 방법과 PHP 스크립트가 호출 수신자 프로그램이 끝날 때까지 기다리는 지 여부에 관한 내용이 있습니다.

    명령을 실행하고 명령의 모든 데이터를 간섭없이 직접 전달해야하는 경우, passthru () 기능을 사용하십시오.

  5. ==============================

    5.명령 줄에서 PHP 스크립트를 실행하는 경우 passthru ()는 큰 이점이 있습니다. vim, 대화 상자 등과 같은 스크립트 / 프로그램을 실행할 수있게하여 프로그램이 제어를 처리하고 완료 될 때까지 스크립트로 돌아 가게합니다.

    명령 줄에서 PHP 스크립트를 실행하는 경우 passthru ()는 큰 이점이 있습니다. vim, 대화 상자 등과 같은 스크립트 / 프로그램을 실행할 수있게하여 프로그램이 제어를 처리하고 완료 될 때까지 스크립트로 돌아 가게합니다.

    system () 또는 exec ()를 사용하여 스크립트 / 프로그램을 실행하면 간단하게 작동하지 않습니다.

    Gotcha : 웬일인지, PHP에서는 passthru ()를 사용하여 실행할 수 없습니다.

  6. from https://stackoverflow.com/questions/732832/php-exec-vs-system-vs-passthru by cc-by-sa and MIT license