树莓派Nginx+PHP7.3+WordPress环境下v4l2-ctl命令执行异常求助
问题分析与解决
核心原因
WordPress的PHP进程默认以www-data用户身份运行,该用户没有访问/dev/video0硬件设备的权限;而你手动执行脚本时用的是pi用户,pi默认属于video用户组,拥有访问视频设备的权限。
- 不带参数的
v4l2-ctl仅输出通用帮助信息,无需访问硬件设备,因此www-data用户可以正常执行并返回结果; - 带
-d /dev/video0 --list-formats-ext参数的命令需要读取视频设备信息,www-data无权限访问,导致shell_exec返回空值。
解决步骤
- 将
www-data用户添加到video用户组,赋予其视频设备访问权限:sudo usermod -aG video www-data - 重启Nginx和PHP-FPM服务,让权限变更生效:
sudo systemctl restart nginx sudo systemctl restart php7.3-fpm - 验证(可选):在PHP脚本中执行以下代码,确认
www-data已加入video组:<?php $output = shell_exec('id'); echo "<pre>$output</pre>"; ?>
执行完以上步骤后,再运行你的原PHP代码,应该就能正常输出视频设备的格式信息了。
内容的提问来源于stack exchange,提问作者ekavet
相关产品推荐
相关产品推荐

