4

目前我的目标是使用查看 PHP exec() 的输出但得到一个空值。我正在使用 firephp(firebug 扩展)日志记录,但不知道为什么它是空的。

完整代码在这里:https ://github.com/MattMcFarland/ninja-forms-uploads-custom/blob/dev/uploads-custom.php

在这里形成: http ://www.hvac-hacks.com/?page_id=1383&preview=true&form_id=96

            exec('mogrify -auto-orient -verbose -format jpg '.$dir."/".$user_file_name,$ouput);
            fb($output);
            curl_exec('mogrify -auto-orient -verbose -format jpg '.$dir."/".$user_file_name,$output);
            fb($output);
            $output = shell_exec('mogrify -auto-orient -verbose -format jpg '.$dir."/".$user_file_name);
            fb($output);

目前,对于我正在使用的每个 exec 方法,控制台都显示为空。真的不知道该怎么办,完全不知所措。

控制台也可以正常工作,因为它显示了其他fb();内容。exec 命令显示一个空行,前面有数字 3,表示空返回 3 次。

有任何想法吗?

4

2 回答 2

3

如果找不到您尝试运行的命令,则 exec 将为空。您需要使用 putenv 告诉 php 在哪里可以找到 mogrify。在我的例子中,mogrify 的路径是 /opt/local/bin。所以下面的代码可以工作,你只需要为你的环境使用正确的路径。

putenv("PATH=/opt/local/bin");
exec('mogrify -auto-orient -verbose -format jpg '.$dir."/".$user_file_name,$ouput);
fb($output);
curl_exec('mogrify -auto-orient -verbose -format jpg '.$dir."/".$user_file_name,$output);
fb($output);
$output = shell_exec('mogrify -auto-orient -verbose -format jpg '.$dir."/".$user_file_name);
fb($output);

我希望这会有所帮助。

于 2013-09-14T04:18:48.283 回答
3

问题是权限问题。不允许用户使用 BASH。

对于 apache 用户,必须在 /etc/passwd 中将 bin/false 更改为 bin/bash。

事后看来,添加 bin/mogrify 可能会更好

于 2013-09-14T05:39:17.003 回答