php 执行 shell 命令,权限不足,怎么办。

2015-08-05 18:31:58 +08:00
 just1
命令行内可以执行,因此判断为权限问题。新手,勿喷。感谢。
7214 次点击
所在节点    PHP
19 条回复
imlewc
2015-08-05 18:40:53 +08:00
sudo 啊
learnshare
2015-08-05 18:42:56 +08:00
给 PHP 文件足够的权限
582033
2015-08-05 18:43:16 +08:00
fastcgi权限
x86
2015-08-05 18:43:42 +08:00
没权限给呀
582033
2015-08-05 18:44:21 +08:00
楼主说的是php中执行shell,不是shell里执行php脚本
ss098
2015-08-05 18:49:42 +08:00
你需要给 Web 服务器的用户执行系统命令的权限,如果是 nginx 的话用户通常是 nginx。
realpg
2015-08-05 19:29:20 +08:00
你确认你们PM和leader都允许你这么搞么……给webserver用户系统的其他权限?
just1
2015-08-05 19:44:53 +08:00
@realpg 那么该怎么操作呢。。如果不赋予权限。似乎没办法。
caola
2015-08-05 19:45:10 +08:00
如果对安全要求不高,可以用 root 来运行 web 服务器和php
oott123
2015-08-05 19:46:35 +08:00
Apache & mod-php 检查 user / group 这两个配置
nginx & php-fpm 检查 fpm 的 user 配置
不管什么环境检查 php.ini 的 disable-functions
还有提问请至少贴出环境和日志,谢谢
just1
2015-08-05 19:49:10 +08:00
算了,我直接用root来运行服务器吧T_T懒得弄了
codercai
2015-08-05 19:54:27 +08:00
@just1 好粗暴啊
DennyDai
2015-08-06 07:52:26 +08:00
关安全模式,php.ini解禁函数
just1
2015-08-06 12:27:22 +08:00
@DennyDai 我的是php5.6,已废除安全模式。函数已解禁,在命令行下可以执行,因此判断是权限不足。但是新的问题来了,,为什么把www用户改成root权限后,访问我的这个页面,502错误。
<?php
passthru('service tor restart');
passthru('python ./1.py');
?>
nginx
DennyDai
2015-08-06 16:00:53 +08:00
@just1 777?
just1
2015-08-06 18:30:42 +08:00
最新状态:
<?php
echo shell_exec('sudo service tor restart');
echo shell_exec('python ./1.py');
?>
py脚本正常执行,上面的一句服务重启怎么都执行不了。已经将www的sudo设置为无密码。该怎么办?
just1
2015-08-06 18:42:44 +08:00
我还丧心病狂地把www改成了可登录,亲自到命令行下测试命令可用性。sudo service tor restart 的确可以直接执行,不需要输入密码。
just1
2015-08-08 23:18:56 +08:00
发现了问题所在,linux默认需要一个终端(tty)才能执行sudo。
解决办法:visudo
找到Defaults requiretty,注释掉即可
huigeer
2015-08-09 11:49:41 +08:00
@jsut1, 最好是单独配一个可以执行shell的php环境, 隔离和web交互的php

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/211047

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX