php不能使用exec执行命令的问题解决方法

在项目中要使用 aapt dump badging 命令来获取apk包信息,单独放到一个php文件里可以执行返回信息,但是放到项目中就不行,百度了一遍之后发现,原来是apache配置文件里使用了php安全模式引起的。

Windows下处理apache虚拟主机的权限:

1、开启安全模式,可以禁用exec()、system()等函数。

2、在httpd.conf中用php_admin_value open_basedir限制PHP的存取目录。

3、在php_admin_value open_basedir别忘了加上php.ini中指定的PHP临时上传目录和session保存目录,不然会无法上传文件、存取session。

php.ini中按如下配置:

upload_tmp_dir = “E:/APMServ5.2.0/PHP/uploadtemp/”

session.save_path = “E:/APMServ5.2.0/PHP/sessiondata/”

4、Apache2.0配置示例:


ServerName www.abc.com
DocumentRoot “E:/smis”
Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php
AllowOverride None
Order Deny,Allow
Allow from all
php_admin_value open_basedir “E:/smis/;E:/APMServ5.2.0/PHP/uploadtemp/;E:/APMServ5.2.0/PHP/sessiondata/”
php_admin_value safe_mode On

5、Apache2.2配置示例:


ServerName www.abc.com
DocumentRoot “E:/smis”


Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php