gpt4 book ai didi

PHP shell_exec() - 不打印动态输出,只打印静态回显文本

转载 作者:太空狗 更新时间:2023-10-29 12:07:15 24 4
gpt4 key购买 nike

****UPDATE****
# The issue was within the wanpipemon script and the way that it interacts
# with ioctl basically unless you want to edit the source for wanpipemon
# and recompile it, it will not work. I have tried -S with root among
# others and unless I am within console it throws a not authorized error
# in the ioctl function.

好的,我有一个简单的 shell 脚本,它运行一个命令并输出 FXO 线电压,通常你必须一次获得一条线,这个将它们组合成一个可读的输出。 (与这篇文章无关,但我认为有人可能会问这个脚本的作用)

这是 shell 脚本:

#!/bin/bash

LINE1=$(wanpipemon -i w1g1 -c astats -m 1 | grep -m1 VOLT | cut -d ":" -f 2-2)
LINE2=$(wanpipemon -i w1g1 -c astats -m 2 | grep -m1 VOLT | cut -d ":" -f 2-2)
LINE3=$(wanpipemon -i w1g1 -c astats -m 3 | grep -m1 VOLT | cut -d ":" -f 2-2)
LINE4=$(wanpipemon -i w1g1 -c astats -m 4 | grep -m1 VOLT | cut -d ":" -f 2-2)
LINE5=$(wanpipemon -i w1g1 -c astats -m 5 | grep -m1 VOLT | cut -d ":" -f 2-2)
LINE6=$(wanpipemon -i w1g1 -c astats -m 6 | grep -m1 VOLT | cut -d ":" -f 2-2)

echo "Line 1 Voltage: $LINE1"
echo "Line 2 Voltage: $LINE2"
echo "Line 3 Voltage: $LINE3"
echo "Line 4 Voltage: $LINE4"
echo "Line 5 Voltage: $LINE5"
echo "Line 6 Voltage: $LINE6"

通过终端在机器上运行脚本真的非常完美。在我的 PHP 脚本中,我只是这样做(php 脚本与 sh 文件位于同一台服务器上):

<?php
$output = shell_exec('/usr/sbin/linesta.sh');
echo "<pre>$output</pre>";
?>

我在运行脚本的浏览器中收到的输出是:

Line 1 Voltage:
Line 2 Voltage:
Line 3 Voltage:
Line 4 Voltage:
Line 5 Voltage:
Line 6 Voltage:

现在我已经确定权限是正确的,我们应该已经知道了,因为它运行了 50%,就像我说过的,我知道脚本可以在机器上运行。

这真的很奇怪,因为它输出的是静态文本而不是动态文本。命令“wanpipemon -i w1g1 -c astats -m *”是我 PBX 上模拟卡驱动程序应用程序的一部分,不需要 root 来运行它(任何用户都可以运行该命令)所以它让我感到困惑正在进行。

任何帮助和/或调试建议将不胜感激,到目前为止,我只尝试仔细检查 shell 脚本的权限,在服务器上的控制台(即 linesta.sh)中运行脚本,但我不确定还有什么去测试。我已经尝试了其他 PHP 命令,例如 exec() 和 system(),结果完全相同。

最佳答案

wanpipemon 是否在 PHP 用来执行脚本的任何 shell 的路径中? “未找到文件”类型的错误将被写入 stderr,而不会被脚本中的字符串构建所捕获,也不会被 PHP 捕获,除非您进行了 stderr 重定向:

$output = shell_exec('/usr/sbin/linesta.sh 2>&1');
^^^^--- redirect stderr to stdout.

关于PHP shell_exec() - 不打印动态输出,只打印静态回显文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6780285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com