我编写了一个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");
?>
这有什么问题?
修改
正如您所建议的那样,我已将脚本放入PATH eviroment变量(我编辑过.bash_profile)。 现在我可以直接从CLI启动命令,但从PHP启动它的问题保持不变。
我尝试过这些命令,但它们似乎都不起作用:
exec("bash /usr/local/bin/screenshot.sh");
exec("bash screenshot.sh");
exec("screenshot.sh");
编辑2:
我尝试运行以下代码来说明调用脚本发生了什么:
<?php
$array = array();
$integer;
exec("bash /usr/local/bin/screenshot.sh 2>&1",$array,$integer);
echo "<pre>";
var_dump($integer);
echo "</pre>";
?>
返回int(133);不知道这意味着什么。 附:我也编辑了shebang。
编辑3:
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"
}
答案 0 :(得分:3)
问题的产生是因为OSX和MacPorts彼此不兼容 库!
要解决此问题,您必须以root身份编辑文件/ usr / pkg / sbin / envvars:
只需:
注释掉这些行
DYLD_LIBRARY_PATH = “/应用/ MAMP /库/ lib中:$ DYLD_LIBRARY_PATH”
导出DYLD_LIBRARY_PATH
在文档末尾添加此行
export PATH =“$ PATH:/ opt / local / bin”
答案 1 :(得分:0)
确保bash可执行文件所在的目录位于PATH环境变量中...很有可能Web服务器环境已将其过滤掉。