在 PHP 上运行C++可执行文件

Run C++ executable on PHP

本文关键字:C++ 可执行文件 运行 PHP      更新时间:2023-10-16

我想编写PHP脚本,它在Linux机器上执行C++可执行文件。我使用 exec() 或 system() PHP 函数。但它不执行可执行文件C++。我的代码如下。Proc 编译C++可执行文件。完全相同的命令在外壳中工作正常。

echo system('/var/www/image_proc/proc "/var/www/image_proc/images/original/5_1.png" 70 0 0 "/var/www/image_proc/images/processed/5_2.png"');

我检查了执行和写入文件的所有权限。我使用绝对路径来确保它不是路径问题。

有谁知道,可能有什么问题?任何帮助,不胜感激。

我怀疑问题是引号的使用。SHELL 可能会扩展/评估这些,但调用 system() 不会。 libc 系统

因此,建议的解决方案是:

<?php
    error_reporting(E_ALL);
    ini_set("display_errors", 1);
    $src = "/var/www/image_proc/images/original/5_1.png";
    $dst = "/var/www/image_proc/images/processed/5_2.png";
    $cmd = sprintf("/var/www/image_proc/proc %s 70 0 0 %s", $src, $dst);
    $result = system($cmd, $retval);
    printf("Result: '%s'nnReturn value: %dnn", $result, $retval);
?>

这将输出命令的结果或有用的错误信息。特别重要的是,这为我们提供了一个返回值,我们可以根据该值找出发生了什么。