为了账号安全,请及时绑定邮箱和手机立即绑定

centos7上,PHP的shell_exec()不执行命令怎么办?

centos7上,PHP的shell_exec()不执行命令怎么办?

PHP
HUWWW 2019-03-07 12:58:19
我使用 命令 ffmpeg -i /home/video/a.mp4 -r 1 -s 950x520 -f image2 /home/video/a.jpg在终端运行可以执行,但是在PHP文件里,用shell_exec('ffmpeg -i /home/video/a.mp4 -r 1 -s 950x520 -f image2 /home/video/a.jpg')却没有执行成功,网上百度说是权限问题,于是测试, echo shell_exec('ls') 可以执行echo shell_exec('whoami') 显示 nginx 于是vim /etc/sudoers 添加了 Allow root to run any commands anywhere root ALL=(ALL) ALLnginx ALL=(ALL) ALL 保存后, reboot重启 但是也没有用啊。 是不是要把nginx添加到root用户组才行?
查看完整描述

5 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

把命令写在sh脚本里,运行脚本应该可以。

查看完整回答
反对 回复 2019-03-18
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

php运行脚本 跟nginx有什么关系?你应该看看php-fpm的权限

查看完整回答
反对 回复 2019-03-18
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

sudo试试呢?

查看完整回答
反对 回复 2019-03-18
?
狐的传说

TA贡献1804条经验 获得超3个赞

1、如果你的命令如果需要超级权限的话,请确保你执行php-fpm的用户拥有sudo权限,并且在命令前就sudo
2、执行sudo命令默认情况下是需要一个终端环境的,想去掉这个约束的话,注释掉/etc/sudoers 文件下的Defaults requiretty这一行
3、在php里执行命令你可以把执行的结果打印出来看看错误信息以及错误码去分析

查看完整回答
反对 回复 2019-03-18
?
DIEA

TA贡献1820条经验 获得超2个赞

1.权限(包含php可执行的方法)
2.程序路径
3.你可以把日志和错误重定向输出到文件

关注下应该就能找到问题了。

查看完整回答
反对 回复 2019-03-18
  • 5 回答
  • 0 关注
  • 1717 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信