>  기사  >  백엔드 개발  >  PHP에서 C 메소드를 호출하는 방법

PHP에서 C 메소드를 호출하는 방법

coldplay.xixi
coldplay.xixi원래의
2020-08-03 10:20:025006검색

PHP가 c 메소드를 호출하는 방법: 먼저 [test.c] 소스 파일을 작성한 다음 이를 저장하고 컴파일을 실행한 다음 마지막으로 [add.php]에서 직접 코드를 실행합니다. passthru 호출을 완료하려면 명령줄에서 명령을 실행하기만 하면 됩니다.

PHP에서 C 메소드를 호출하는 방법

PHP에서 c 메소드를 호출하는 방법:

PHP에서 c/C++를 호출하는 방법에는 여러 가지가 있습니다. 가장 일반적으로 사용되는 방법은 tcp 또는 http를 통해 호출하는 방법과 작성된 cgi/fastcgi를 호출하는 것입니다. c/C++ 이를 달성하기 위해 PHP에는 외부 애플리케이션을 직접 실행하는 방법도 있습니다. 이 방법은 시스템 보안에 영향을 미치고 공격자가 쉽게 악용할 수 있으므로 사용 시 사용자 입력을 주의 깊게 처리해야 합니다.

PHP 외부 바이너리 명령을 실행하는 함수 exec, passthru 등이 있는데 passthru 함수는 명령을 실행하고 외부 명령의 출력을 반환할 수 있으므로 이번에는 passthru를 사용하여 c/c++를 호출하는 PHP를 사용하겠습니다. 함수는 복잡한 계산을 처리할 때 계산 효율성을 높이기 위한 것이므로 전체 시스템 성능을 향상시키기 위해 다음은 간단한 테스트 케이스입니다

먼저 test.c 소스 파일을 작성합니다. 처리는 매우 간단합니다. 코드는 다음과 같습니다. test.c源文件,处理很简单就是对两个整数进行加法运算,代码如下:

#include<stdio.h>
int main(int argc, char **argv) {
    //printf("参数个数:%d\n", argc-1);
    int a = atol(argv[1]);
    int b = atol(argv[2]);
    int sum = a + b;
    printf("%d\n", sum);
    return 0;
}

保存后,执行编译: gcc test.c -o test 编译后会在当前目录下生成test可执行文件,通过 ./test 5 12 可以执行文件看到输出17

然后写表单和php代码,为了简单,当前目录就是web访问根目录,实际中要把C/C++项目放在web访问目录之外,在php中使用绝对路径调用

表单form.html代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>php调用c/c++案例</title>
</head>
<body>
    <form method="post" action="add.php">
        <div>
            请输入两个整数:
            <input type="text" name="a" />
            +
            <input type="text" name="b" />
            <input type="submit" value="相加" />
        </div>
    </form>
</body>
</html>

php处理程序add.php代码:

<?php
header("Content-Type:text/html; charset=utf-8");
if(isset($_POST[&#39;a&#39;]) && isset($_POST[&#39;b&#39;]) && !empty($_POST[&#39;a&#39;]) && !empty($_POST[&#39;b&#39;])) {
    $command = &#39;./test &#39;.$_POST[&#39;a&#39;].&#39; &#39;.$_POST[&#39;b&#39;];
    $result = passthru($command);
    print_r($result);
} else {
    echo "输入不能为空!";
}
?>

可以看出,在add.php中就是通过passthrurrreee
Save 그 후 컴파일을 수행합니다: gcc test.c -o test 컴파일 후 테스트 실행 파일이 현재 디렉터리에 생성됩니다. 이는 ./test 5 12 출력 17

을 통해 확인할 수 있으며, 단순화를 위해 현재 디렉터리는 웹 액세스 루트 디렉터리입니다. 프로젝트는 웹 액세스 디렉토리 외부에 배치되어야 하며

양식을 호출하기 위해 PHP에서 절대 경로가 사용됩니다. HTML 코드:

rrreeePHP에서 C 메소드를 호출하는 방법php 핸들러 add.php 코드:

rrreee

add.php에서는 명령줄에 있는 명령이 passthru를 통해 직접 실행되는 것을 볼 수 있습니다. 호출을 완료하려면PHP에서 C 메소드를 호출하는 방법

테스트 결과:


🎜🎜🎜🎜관련 학습 권장 사항: 🎜 PHP 그래픽 튜토리얼🎜🎜🎜🎜

위 내용은 PHP에서 C 메소드를 호출하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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