【发布时间】:2016-08-20 21:05:02
【问题描述】:
当我从 cmd 在 linux 机器上运行它(bash 脚本)时,我得到 online 作为输出,但是当我从其他机器的浏览器远程运行它时,我得到 offline 作为输出。 我的 bash 脚本:
#!/bin/bash
wget -q --tries=10 --timeout=10 --spider http://google.com
if [[ $? -eq 0 ]]; then
echo "online"
else
echo "offline"
fi
我的 PHP 脚本是:
<!DOCTYPE html>
<html><head><title>
This is the title
</title></head>
<body>
<?php
$output=shell_exec('/home/pi/checkonline.sh');
echo $output;
?>
</body></html>
注意:我在运行 raspbian OS、php5、apache2 的 raspberry pi 2 上托管 Web 服务器。 我使用 proxyserver 连接互联网,我已经在 apt.conf 中成功配置并导出 http_proxy,所以不会出现问题。
【问题讨论】:
-
通过命令行执行php脚本是否有效?
-
是的,从命令行运行 php 会在线输出。 @jedifans
-
删除 wget 的“-q”参数并用“-v”替换它。查看 wget 打印的内容。很可能是 SElinux、Apparmor 或类似的看门狗阻止您从 Apache2 服务器进程运行 wget。
-
在浏览器中打印 offline 仍然是一样的,但在终端中 php5 .../bash.php 给出了长输出作为连接好的最后在线。
-
尝试在 wget 执行之前设置代理设置
http_proxy=$your_value wget ...或在脚本中 wget 之前将其导出。