我想在这样的php脚本中执行命令:

<?php
shell_exec(php myfile.php)


<?php
shell_exec(ffmpeg -i ...)

我的问题是,我认为php和ffmpeg路径没有在我的apache环境中正确配置,因为当我执行以下操作时:
<?php
var_dump(shell_exec("which php"));
var_dump(shell_exec("which ffmpeg"));

我得到这个答案:
string '/usr/bin/php' (length=13)
null

但是当我在终端输入:
which php
which ffmpeg

我得到这个答案:
/usr/local/opt/php55/bin/php
/usr/local/bin/ffmpeg

那么,如何在不总是重新键入完整路径的情况下正确设置php和ffmpeg环境路径呢?
我使用的是MacOSX10.10,我用Brew安装了PHP和FFMPEG。

最佳答案

您可以像在shell中一样将环境变量放入命令中。
示例:

shell_exec('PATH=/usr/local/bin:/usr/local/opt/php55/bin:$PATH which ffmpeg');

替代解决方案:
如果您不想让代码变脏,可以按如下方式配置您的apache环境变量。
雨衣:
编辑
/System/Library/LaunchDaemons/org.apache.httpd.plist

并添加
<key>EnvironmentVariables</key>
<dict>
    <key>PATH</key>
    <string>/usr/local/bin:/usr/local/opt/php55/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>

(答案来自$PATH environment variable for apache2 on mac
其他平台:(供参考)
https://serverfault.com/questions/151328/setting-apache2-path-environment-variable

10-06 10:03