2016-08-20 13 views
1

からbashスクリプトを実行しています。 私のbashスクリプト:は、私はCMDからLinuxマシン上で(bashスクリプト)を実行すると、私は出力として<strong>オンライン</strong>を取得するが、私は他のマシンのブラウザからリモートで実行したとき、私は出力として<strong>オフライン</strong>を取得するPHP

#!/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のを実行しているラズベリーパイ2上のWebサーバーをホスティングしています。 私はプロキシサーバーを使ってインターネットに接続していますが、これはapt.confとexport http_proxyで正しく設定されているので、問題はありません。

+0

は、コマンドラインから実行するPHPスクリプトの仕事をしていますか? – jedifans

+0

はい、コマンドラインからphpを実行すると、出力としてオンラインになります。 @jedifans – Utsav

+0

wgetの "-q"引数を削除し、 "-v"に置き換えます。 wgetの内容を参照してください。 SElinux、Apparmor、または同様のウォッチドッグがApache2サーバープロセスからwgetを実行できないことが非常にうかがいます。 – Technaton

答えて

0

てみwgetの

WGET=/usr/bin/wget

WGET='which wget' <の完全なパスを使用する - 使用のバッククォート

+0

は完全なパスを使用してもブラウザでは動作しませんが、コマンドラインからphpを実行すると出力としてオンラインになります – Utsav

0

は、PHPスクリプトと同じフォルダにスクリプトを入れて、実行権限を追加してください。私にとっては、それは働いていて、オンラインで印刷しています。 sudo chmod +x checkonline.sh

<!DOCTYPE html> 
<html><head><title> 
This is the title 
</title></head> 
<body> 
<h1>output</h1> 
<?php 
$output=shell_exec('./checkonline.sh'); 
echo $output; 
?> 
</body></html> 

#!/bin/bash 
wget -q --tries=10 --timeout=10 --spider http://www.google.com 
if [[ $? -eq 0 ]]; then 
    echo "online" 
else 
    echo "offline" 
fi 
+0

コードをコピーしてブラウザで上記と同様の処理を行いました。プロキシサーバーの背後にあるインターネットを使用しているので問題になるかもしれません。おそらく、apache2にはプロキシが設定されている必要があります – Utsav

関連する問題

 関連する問題