PHP 调用 C++ 程序实战:从编译到交互

宋时安
宋时安
发布时间:2026-10-14| 5人浏览过
原创

PHP 作为一种广泛使用的 Web 后端语言,有时需要借助性能更高的 C++ 模块来处理特定任务。本文将演示如何通过命令行工具(exec/shell_exec)让 PHP 脚本调用已编译的 C++ 可执行文件,实现两者之间的基本交互。

准备条件

为了完成本教程,你需要确保服务器环境满足以下条件:

  • 安装并配置好 Apache/Nginx 和 PHP 环境。
  • 服务器上安装了 C++ 编译器(如 g++)。
  • Web 服务器用户(如 www-data 或 apache)对目标目录具有读取和执行权限。

操作步骤

第1步:创建测试目录与 C++ 源文件

首先,在 Web 根目录下创建一个用于测试的文件夹。例如,在 /var/www/ 下新建名为 cpp 的目录。接着,在该目录下创建一个 C++ 源文件 sort.cpp。你可以编写一个简单的程序,例如用于排序或返回字符串的程序,以便后续验证调用是否成功。

sort.cpp 的内容示意如下:

保存文件后,我们需要对其进行编译。使用终端进入该目录,运行以下命令将 C++ 源码编译为可执行文件:

g++ sort.cpp -o sort_exec

编译成功后,你会得到一个名为 sort_exec 的二进制文件。务必确保该文件具有执行权限(chmod +x sort_exec),否则 PHP 将无法运行它。

第2步:创建测试 HTML 表单

为了方便提交请求进行测试,我们可以创建一个简单的 HTML 页面。在 cpp 文件夹下新建文件 cpp.html。这个页面将包含一个表单,用于触发后端的 PHP 处理逻辑。

cpp.html 的代码结构参考:

第3步:编写 PHP 调用脚本

接下来,创建核心的 PHP 文件 cpp.php。在这个文件中,我们将使用 PHP 的系统执行函数来运行之前编译好的 C++ 程序。最常用的函数是 shell_exec() 或 exec()。

cpp.php 的关键代码如下:

注意事项:

  1. 路径问题: 在执行命令时,建议使用文件的绝对路径,以避免因工作目录不同导致的“文件未找到”错误。
  2. 安全警告: 直接拼接用户输入到系统命令中极易导致命令注入漏洞。在生产环境中,务必对用户输入进行严格的过滤和校验,或者使用白名单机制,绝不要直接将未经处理的 $_GET/$_POST 数据传给 exec 函数。

第4步:执行测试与查看结果

现在,浏览器打开 cpp.html 页面。点击提交按钮后,页面会跳转或请求 cpp.php。

初始提交界面如下:

提交后,如果一切配置正确,C++ 程序将被执行,其标准输出会被 PHP 捕获并在页面上显示出来。最终结果展示如下:

常见问题排查

  • 权限拒绝 (Permission denied): 检查 Web 服务器用户是否有权限执行 C++ 生成的二进制文件,以及是否有权限写入/读取相关文件。
  • 命令找不到: 在 PHP 中尝试直接使用绝对路径执行二进制文件,而不是相对路径。
  • 超时: 如果 C++ 程序运行时间过长,可能导致 PHP 请求超时。可在调用前设置 set_time_limit(0);。

以上就是通过 PHP 调用 C++ 程序的详细内容,更多关于 PHP 与 C++ 交互的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。