我想编写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"');
我检查了执行和编写文件的所有权限。我使用绝对路径来确保它不是路径问题。
有谁知道,可能是什么问题? 任何帮助表示赞赏。
答案 0 :(得分:1)
我怀疑问题是使用引号。 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);
?>
这将输出命令的结果或有用的错误信息。特别重要的是,这给了我们一个返回值,我们可以根据这个值找出发生了什么。