PHP shell_exec不一致

PHP shell_exec不一致,php,macos,osx-mountain-lion,Php,Macos,Osx Mountain Lion,我试图在PDF文件中搜索多个关键词。我有约60个PDF和约8个关键字,不喜欢约480个手动搜索 我愿意接受其他建议(见下文),但目前我的方法是在OS X上使用mdfind,如下所示: $finds = array(); foreach ($search as $term) { $result = ""; $cleanResult = array(); $shellQuery = "mdfind -onlyin \"$wd\" \"kind:pdf $term\"";

我试图在PDF文件中搜索多个关键词。我有约60个PDF和约8个关键字,不喜欢约480个手动搜索

我愿意接受其他建议(见下文),但目前我的方法是在OS X上使用
mdfind
,如下所示:

$finds = array();
foreach ($search as $term) {
    $result = "";
    $cleanResult = array();
    $shellQuery = "mdfind -onlyin \"$wd\" \"kind:pdf $term\"";
    echo "\n\n$shellQuery\n";
    $result = shell_exec($shellQuery);
    echo $result;
    $cleanResult = split("\n", $result);
    array_pop($cleanResult);
    $finds[$term] = $cleanResult;

    unset($result);
    unset($cleanResult);
}
print_r($finds);
然而,尽管这构建的
$shellQuery
很好,但由于某些原因,
$result
即使在命令工作时也不会总是被填充(即,如果我将
$shellQuery
的值复制并粘贴到终端窗口中,它也会按预期工作)

假设
$search
包含'foo','bar'和'joe',它可能会找到'foo'和'joe'很好,但是'bar'不会返回任何内容。如果我从数组中删除'foo'和'joe'并只搜索'bar',它会找到'bar'很好。它需要在通话之间休息一下吗

顺便说一句,我更喜欢的方法是:

find-名称“*.pdf*”-exec pdftotext{}-\|grep-i-l“foo”


但我不能让它在终端工作。我已经安装了(我很难编译东西,所以像这样的软件包=竖起大拇指!),但每次我尝试将它传输到grep(例如
pdftotext myfile.pdf-|grep-I-l“foo”
)grep只返回
(标准输出)
,没有其他方法了。

你有没有办法重写你的问题?请少用些词。我发现很难解析。@TheodoreR.Smith这个问题没有问题。我更喜欢使用
exec()
,因为它还捕获返回值;可能工具返回了一个错误。您还可以使用
2>&1
重定向标准错误;仍然没有返回任何内容。@TheodoreR.Smith抱歉,您觉得它不可读。简单地说:
shell\u exec
没有返回某些内容,即使传递给它的命令在终端中使用时确实返回某些内容。