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

标签 php c++ linux executable

我想编写 PHP 脚本,它在 Linux 机器上执行 C++ 可执行文件。我使用 exec() 或 system() PHP 函数。但它不执行 C++ 可执行文件。 我的代码如下。 Proc 是经过编译的 C++ 可执行文件。完全相同的命令在 shell 中运行良好。

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 system

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

<?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'\n\nReturn value: %d\n\n", $result, $retval);
?>

这将输出命令的结果或有用的错误信息。尤其重要的是,这给了我们一个返回值,我们可以根据它找出发生了什么。

关于php - 在 PHP 上运行 C++ 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13749148/

相关文章:

linux - Perl 中的标量 - 可以在整个脚本中导出它们吗

windows - 是否可以在不安装 ssh 的情况下从 Linux 在 Windows 计算机上远程运行批处理脚本?

php - 使用 Id 显示链接表中的 MySql 数据

c++ - Bison/柔性 : print erroneous line

php - mysql 数据库中的复选框值

c++ - 如果没有创建该类的对象,该类的静态成员是否会占用内存?

c++ - 生成文件.am : How to Add rule for new extension?

java - 从 Windows 和 linux 从 Linux 机器访问文件夹

php - 多级用户组 PHP Mysql 无限循环

php - PHP MYSQL中的错误跟踪-是否有更多信息?