2011-06-01 66 views
0

我试图运行apktool(只是一个工具来解压android应用程序)在网上使用PHP shell_exec但它不工作。有谁知道这可能是为什么?shell_exec与PHP

这是该行代码实际上是这样的:

$output = `apktool d -f $file_name`; 

任何建议将帮助我完全不知所措,为什么我运行PHP和没有任何反应。 谢谢!

+2

大概重要来电http://php.net/escapeshellarg – 2011-06-01 21:24:18

+0

是否有错误输出?尝试使用'exec'函数,如果使用第二个或第三个参数,这将使您可以访问'apktool'命令的输出。如果您需要更多帮助,请将输出放回此处。 – Robin 2011-06-01 21:25:13

+0

apktool通常使用简单的shell命令'apktool d -f $ file_name'运行,这就是为什么我基本上只是复制该命令并将其放入反引号中。我也用'shell_exec'和'exec'尝试过,目前还没有。 – Corey 2011-06-01 21:37:37

回答

0

确保您的实际路线是:

$output = shell_exec(`apktool d -f $file_name`); 

这php.ini文件没有safe_mode打开或有01​​在 的disable_functions指令中列出。

1

检查您的Web服务器(可能是apache)是否有足够的权限来执行apktool。包含apktool二进制文件的完整路径。如果文件名中有空格,请使用单引号。

如果有详细的命令未执行的细节,请检查您的Web服务器的日志。

2

我找到了解决方案。 创建EXEC权限build.sh文件,写有这样的代码:

#!/bin/bash 
export PATH=/opt/local/bin:/opt/local/sbin:/usr/bin/:/usr/sbin/:/bin:/sbin/:/bin/sbin:/usr/local/bin:/usr/X11/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin 

/usr/local/bin/apktool b -d $1 $2 

- 使用运行./build.sh

<? php shell_exec("/path/to/build.sh $dir $file"); ?>