PHP执行Linux Shell命令

分类:技术文档 - PHP文档 | 阅读(7228) | 发布于:2016-01-15 17:00

PHP无法执行shell命令

使用PHP函数exec(),systom(),shell_exec()等执行linux命令的时候发现无法执行:
一般是以下原因:
1.php的shell执行函数被禁用了。修改PHP配置文件取消函数禁用。
解决方法:
sed -i 's/^disable_functions/;disable_functions/g' /usr/local/php/etc/php.ini
service php-fpm restart
2.php没有权限执行该shell
web访问apache服务器时有个配置,user 和 group,默认是apache,为了安全一般都改成nobody.
nobody用户是不能执行shell的。此时需修改 nobody 用户的家目录为/bin/bash。
解决方法:
vi /etc/passwd
#在以nobody为开头的一行修改/sbin/nologin 改为 /bin/bash 
:set nu
#我的是第15行 -是分隔符
:15s-/sbin/nologin-/bin/bash-g
:x

php执行shell命令乱码

php在命令行下执行shell命令的时候正常显示中文字符,
但是通过浏览器运行该脚本的时候发现所有的中文字符变为?\123?\456?\789等类似的乱码。
造成原因:
命令行模式下使用php运行脚本(/usr/bin/php test.php)所处用户是你当前登录的用户。
它的语言环境变量中已经配置了中文。但是在使用浏览器访问的时候,实际上是使用的Web服务器的用户来执行的脚本。
环境变量没有配置语言设置。
解决办法:
在php代码中加入当前的语言环境变量。
shell_exec('export LANG="zh_CN.UTF-8"');

标签:Shellshell_execexecsystem权限