热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP调用Shell脚本需要注意的问题

php调用shell脚本的svnup.php文件内容:?set_time_limit(0);$outputarray();$ret0;exec(usrbinsudodata0shellsvnvp.sh,$output,$ret);echoResult:{$ret};print_r($output);?data0shellsvnvp.sh是更新的脚本,主要内容是sv

php调用shell脚本的svnup.php文件内容:

set_time_limit(0);
//$output = array();
$ret = 0;
exec("/usr/bin/sudo /data0/shell/svnvp.sh", $output, $ret);
echo "Result:{$ret}";
print_r($output);
?>

/data0/shell/svnvp.sh是更新的脚本,主要内容是svn up。

还需要修改sudo配置文件,直接键如visudo命令编辑配置文件:

1. 注释Defaults requiretty
Defaults requiretty修改为 #Defaults requiretty, 表示不需要控制终端。
否则会出现sudo: sorry, you must have a tty to run sudo

2. 增加行 Defaults visiblepw
否则会出现 sudo: no tty present and no askpass program specified

我发现sudo-1.6.9p17-5.el5是不支持这个参数的,sudo-1.7.2p1-10.el5支持。


3. 赋予www用户执行svn权限
如,增加行:www  ALL=(ALL) NOPASSWD: /data0/shell/svnvp.sh
注:NOPASSWD可以使在命令执行时不需要交互输入www 用户的密码

www用户为nginx或apache的运行用户

4.重启nginx或apache,让用户重新获得权限。


推荐阅读
author-avatar
快乐皇妃800
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有