所以我有一个小的PHP代码段,它使用了exec
函数。
在我的示例中,我运行此代码:
// a bit setup before, but that is not too relevant for now
$jobs = count($redis->keys('*')); // outputs 10 if the job-amount is reached
if($jobs == 10) {
exec("/usr/src/gx/examples/cpp/cpd/cpd01.out > /dev/null 2>&1 &");
}
首先:我知道,我不必将它们分开,但我在c ++中的知识并不太深,而且我真的不想改变代码,因为它是第三方lib。
出于某种原因,我的PHP脚本在达到10个作业后没有运行。我可以说,C ++脚本被调用,但似乎它永远不会回到PHP。
我发现了类似的主题和问题,但到目前为止没有任何帮助
我认为C ++代码不应该是相关的。不过我添加了它。
在我的shell中,我只使用./
运行我的命令或调用完整路径:/usr/src/ex/examples/cpp/cpd/cpd01.out
,一切正常。
有什么想法吗?
//更新1
我将代码扩展到了这个:
exec("/usr/src/gx/examples/cpp/cpd/cpd01.out > /dev/null 2>&1 &", $array, $status );
$redis->flushdb();
fwrite($fp, $status . "\n");
fwrite($fp, "------------\n");
fwrite($fp, print_r($array));
出来了:
0
------------
10
------------
10
------------
10
------------
1
此外,我只使用chown
cpd01.out
- 文件到www-data:www-data
答案 0 :(得分:0)
首先,您的用户(运行脚本的人,如果是apache的www-data)是否有权运行它?
如果您定义第二个参数,因为它将返回一个数组,其中包含用于调试目的的输出和一个带有命令退出状态的第三个参数(http://php.net/manual/en/function.exec.php)。
if($jobs == 10) {
exec("/usr/src/gx/examples/cpp/cpd/cpd01.out 2>&1", $array, $status);
echo $status . "\n";
var_dump($array);
}