phpでシェルスクリプトを実行し、実行結果を得るコマンドとしてshell_exec
というコマンドがあります。
実行結果がNULLかどうかを判断したかったので、
<?php $output = shell_exec("/bin/sh command") if ($output == NULL) { 処理 }
のように書いていましたが、$outputがNULLなはずなのに、if文の中に入らない時がありましたので、対処法を書きます。
$outputの中身を見てみる
print_r()を使う
print_r($output); die();
とすれば、
$output
の中身が表示され、die();
により処理を止めることが出来ます。
しかし、NULLでも空白が入っていようとこれでは見た目は同じなので、今回の場合はあまり有効ではありません。
var_dumpを使う
同様に
var_dump($output); die();
とすることで、値を表示出来ますが、var_dump
の場合は文字列の長さも表示されます。
なので、
長さが0 → NULL 長さが0ではない → NULLではない(空白が入っている可能性)
と考えることが出来ます。
この空白をどのように処理するのか?
trim
関数を使います。
この関数は空白を切り取ってくれる関数です。
なので、一番最初のプログラムに戻ると
<?php $output = shell_exec("/bin/sh command") if (trim($output) == NULL) { 処理 }
とすることで、$outputがNULL(空白が入っていても)if文の中を通ってくれます。