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

发布于 2022-09-11 15:00:22 字数 514 浏览 19 评论 0

我使用 命令
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) ALL
nginx ALL=(ALL) ALL

保存后, reboot重启 但是也没有用啊。

是不是要把nginx添加到root用户组才行?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

日裸衫吸 2022-09-18 15:00:22

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

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

向日葵 2022-09-18 15:00:22

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

金兰素衣 2022-09-18 15:00:22

sudo试试呢?

栩栩如生 2022-09-18 15:00:22

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

倾城°AllureLove 2022-09-18 15:00:22

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文