PR

[PHP] スクリプトからSAPI を調べる

ファイル関係が面倒なので事あるごとにメールで送ってしまう。それ以外だとデータベースに接続してしまったほうが面倒がなくていいけど、それが面倒だったりする。

どのモードで動作しているかをサクっと返してくれるものがないらしい。

一般的にはテンポラリファイルを作って書き込み出来るかをチェックしたりするようだ。これはperl でも同じだけどエラー処理とか例外処理とかが面倒だ…。

PHP マニュアルによれば、CLI から実行していればcli を返すらしいが・・?

スポンサードリンク

結果

CLI から実行

php_sapi_name:cgi<br />
Script return:CGI
END

Web から呼び出す

php_sapi_name:apache
Script return:other END

あれ?

ちなみに、テストはCORESERVER で行った。CORESERVER は通常モジュール版で、.htaccess を設定することでCGI 版になる。が、どちらも同じ結果「apache」だった。うーん。

テストコード

<?php
/*
 * t_getPhpMode
 *
 * the script check running mode,
 * return CLI or CGI or null
 *
 * PHP4.2.0+
 *
 * Ver.0.01 2011.09.29 by casey.jp
 *
 */

echo "<br />\nphp_sapi_name:";
echo php_sapi_name();

echo "<br />\nScript return:";
$tmp = checkPhpMode();
echo $tmp ? $tmp : "other";

echo "\nEND";
exit;

/*
 * see also:
 * http://www.php.net/manual/ja/function.php-sapi-name.php
 */
function checkPhpMode(){
    $sapi_type = php_sapi_name();
    $tmp = substr($sapi_type, 0, 3);
    if($tmp == 'cgi'){
        return 'CGI';
    }elseif($tmp == 'cli'){
        return "CLI";
    }else{
        return null;
    }
}
?>

コメント