PHP exec() 返回空值


php exec() returning empty value

目前我的目标是使用 see 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 次。

有什么想法吗?

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

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

事后看来,最好只添加垃圾箱/莫格里夫

如果 exec 找不到您尝试运行的命令,它将为空。你需要告诉 php 它在哪里可以找到 mogrify 通过使用 putenv。在我的例子中,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);

我希望这有所帮助。