PHP exec bash脚本

PHP exec bash脚本,php,bash,Php,Bash,我已经编写了一个bash脚本来截图,我想从PHP页面启动它: #!/bin/bash screenshot="screnshot.png" screencapture='/usr/sbin/screencapture -xC' if [ `whoami` == 'root' ]; then loginpid=`ps -ax | grep [l]oginwindow.app | awk '{print $1}'` launchctl bsexec $loginpid $screencapt

我已经编写了一个bash脚本来截图,我想从PHP页面启动它:

#!/bin/bash

screenshot="screnshot.png"
screencapture='/usr/sbin/screencapture -xC'

if [ `whoami` == 'root' ]; then
loginpid=`ps -ax | grep [l]oginwindow.app | awk '{print $1}'`
  launchctl bsexec $loginpid $screencapture $screenshot
else
  $screencapture $screenshot
fi
当我尝试从CLI启动它时,它会按预期工作,但当我尝试使用PHP启动它时,它不会工作:

<?php
exec("bash /Users/giorgio/Desktop/src.sh");     
?>
编辑2:

我已尝试运行以下代码来记录被调用脚本的情况:

<?php
$array = array();
$integer;
exec("bash /usr/local/bin/screenshot.sh 2>&1",$array,$integer);     
echo "<pre>";
var_dump($integer);
echo "</pre>";
?>

确保bash可执行文件所在的目录位于PATH环境变量中。。。web服务器环境很可能已经过滤掉了这个问题。

产生这个问题是因为OSX和MacPorts在这些方面彼此不兼容 图书馆

要解决此问题,您必须以root用户身份编辑文件/usr/pkg/sbin/envvars:

只是:

  • 注释掉这些行

    DYLD_LIBRARY_PATH=“/Applications/MAMP/LIBRARY/lib:$DYLD_LIBRARY_PATH”

    导出动态库路径

  • 在文档末尾添加此行

    export PATH=“$PATH:/opt/local/bin”


  • 在CGI上下文中,可能不会在环境中设置“bash”。将脚本的shebang改为
    /bin/bash
    。否则让我们知道它是如何“不工作”的;我不知道如何更具体地说明这一点,因为脚本应该在桌面上创建一个.png,而当我从PHP启动脚本时,它并没有被创建!对不起,我是这方面的新手!我的意思是修改要执行的脚本的第一行(从w/
    #!
    开始的那一行)。编辑
    .bash\u profile
    也没有用;它不在PHP cgi中使用。请充分利用诊断;检查
    $return\u var
    中的代码和脚本的输出。(输出重定向可能是必要的;将
    2>&1
    附加到命令,您应该会在
    $Output
    中看到一些内容)感谢您的努力!我已经按照你说的做了,现在我得到$output和$return\u val。但是我不知道如何解释它们:(我已经解决了!谢谢你的提示!我已经编辑了这个问题,包括你的答案,但不幸的是它没有按预期工作。
    <?php
    $array = array();
    $integer;
    exec("bash /usr/local/bin/screenshot.sh 2>&1",$array,$integer);     
    echo "<pre>";
    var_dump($integer);
    echo "</pre>";
    ?>
    
    array(5) {
      [0]=>
      string(51) "dyld: Symbol not found: __cg_jpeg_resync_to_restart"
      [1]=>
      string(134) "  Referenced from: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO"
      [2]=>
      string(59) "  Expected in: /Applications/MAMP/Library/lib/libJPEG.dylib"
      [3]=>
      string(0) ""
      [4]=>
      string(95) "/usr/local/bin/screenshot.sh: line 11: 44948 Trace/BPT trap          $screencapture $screenshot"
    }