2013-09-06 29 views
7

私はこのようなPHPスクリプトをいくつか呼び出すbashシェルスクリプトを持っています。シェルスクリプト内のPHPスクリプトから終了ステータスを取得します。

#!/bin/bash 

php -f somescript.php 

php -f anotherscript.php 

これらのスクリプトの結果に基づいてエラーログまたはアクティビティレポートを作成したいとします。

シェルスクリプトでPHPスクリプトの終了ステータスを取得する方法はありますか?

整数の終了ステータスまたは文字列メッセージを使用できます。

callee.php発信者を実行

<?php 
echo "my return string\n"; 
echo "another return value\n"; 
exit(20); 

caller.php

<?php 
exec("php callee.php", $output, $return_var); 
print_r(array($output, $return_var)); 

execコマンドの

答えて

9

あなたは簡単にバックティック演算子を使用して出力をキャッチし、$を使用して最後のコマンドの終了コードを取得できますか?

#!/bin/bash 
output=`php -f somescript.php` 
exitcode=$? 

anotheroutput=`php -f anotherscript.php` 
anotherexitcode=$? 
1

$outputパラメータは、他のPHPプログラムの出力を取得するために使用することができます。 phpは以下を出力します:

Array 
(
    [0] => Array 
     (
      [0] => my return string 
      [1] => another return value 
     ) 

    [1] => 20 
) 

注意:exitのステータスは、0〜254の範囲の数値でなければなりません。戻り状況コードの詳細については、exitを参照してください。

+0

ああおかげではなく、PHPスクリプトはbashスクリプトから呼び出された出力を取得する方法はありますか?それが私の求めるものです。あなたが記述した機能を使用するためにPHPでbashスクリプトを書き直すことができたと思います。これは便利です。 –

2

エミリオの答えは良かったが、私は、私は他の人のために少しことを延ばすことができると思いました。あなたが好きならcronの中で、このようなスクリプトを使用して、エラーがある場合、それはあなたを電子メールで送信することができ.. YAY:D

#!/bin/sh 

EMAIL="[email protected]" 
PATH=/sbin:/usr/sbin:/usr/bin:/usr/local/bin:/bin 
export PATH 

output=`php-cgi -f /www/Web/myscript.php myUrlParam=1` 
#echo $output 

if [ "$output" = "0" ]; then 
    echo "Success :D" 
fi 
if [ "$output" = "1" ]; then 
    echo "Failure D:" 
    mailx -s "Script failed" $EMAIL <<!EOF 
    This is an automated message. The script failed. 

    Output was: 
     $output 
!EOF 
fi 

コマンド(代わりにphpの)それが簡単に合格することができますようphp-cgiを使用してURL PHPスクリプトのパラメータ、これらは通常のPHPコードの例を使用してアクセスすることができます。

$id = $_GET["myUrlParam"];

関連する問題