我正在尝试获取我的vg空间磁盘的值。 当我在shell中运行命令时,返回正确值没有任何问题,但是当我将其包含在PHP文件中时,返回的值为NULL。
我看到很多关于它的话题,但没有一个答案解决了我的问题:(
哪些命令有效?这个:
$variable = shell_exec("df -h | grep "username" | awk '{print $3}'");
我认为这不是权限问题,因为此命令有效。 对于测试脚本具有777和root权限。
出现问题的代码:
$test = "VG Size";
$tailletotaleduserveur = shell_exec("vgdisplay vghome | grep ".$test." | awk '{print $3}'");
echo json_encode($tailletotaleduserveur);
“网络”标签中的实际结果:null-> http://prntscr.com/nehsmb
它应该返回“ 5.85”
感谢帮助:)
答案 0 :(得分:1)
您的命令在shell中也会失败:
bash$ vgdisplay vghome | grep VG Size | awk '{print $3}'
grep: Size: No such file or directory
您必须引用'VG Size'
:
$tailletotaleduserveur = shell_exec("vgdisplay vghome | grep '".$test."' | awk '{print $3}'");
答案 1 :(得分:0)
root@ServeurTESTKEVIN ~ # vgdisplay vghome | grep "VG Size" | awk '{print $3}'
5.42
我的命令在shell中运行没有问题(“”已经在我的php命令PS中了:好的,我知道你为什么这么说了..)
我尝试了您的解决方案,但结果为null:
$test = 'VG Size';
$tailletotaleduserveur = shell_exec("vgdisplay vghome | grep '".$test."' | awk '{print $3}'");
编辑:我已经运行:
$tailletotaleduserveur = shell_exec("vgdisplay vghome 2>&1");
结果是...
“文件描述符4(套接字:[288176661])在vgdisplay调用中泄漏。父PID 13761:sh \ n文件描述符9(套接字:[30076])在vgdisplay调用中泄漏。父PID 13761:sh \ n警告:正在运行\ n /run/lvm/lvmetad.socket:访问失败:权限被拒绝\ n警告:无法连接到lvmetad。回到设备扫描。\ n / dev / mapper / control:打开失败:权限被拒绝\ n无法与内核设备映射器驱动程序通信。\ n不兼容的libdevmapper 1.02.137(2016-11-30)和内核驱动程序(未知版本)。\ n / run / lock / lvm / V_vghome:aux:打开失败:权限被拒绝\ n无法为vghome锁定\ n无法处理卷组vghome \ n“
答案 2 :(得分:0)
我的问题的最终答案:):
$test = 'VG Size';
$tailletotaleduserveur = shell_exec("/usr/bin/sudo vgdisplay vghome | grep '".$test."' | awk '{print $3}'");
这样其他人;)部分正确;)我会确认你的答案,谢谢