PHPオプションと情報に関する関数

関数一覧
extension_loaded() /  get_cfg_var() /  get_defined_constants() /  get_extension_funcs() /  get_loaded_extensions() /  getlastmod() /  ini_get_all() /  ini_get() /  ini_set() /  phpinfo()
機能一覧
設定オプションについて /  PHPその他に関する情報を出力する /  設定オプションの値の取得/設定 /  実行中のファイルの最終更新時のタイムスタンプを得る /  ロードされたモジュールを調べる /  定義済みの定数を得る /  モジュールの関数名を得る

設定オプションについて

PHPのインストール/PHPのインストールと設定」のページや「PHPのインストール/.htaccessファイルでの設定」のページで、「include_path」の設定変更なんかをしましたが、・・・要するにこれが設定オプションです。

この設定オプションは、設定ファイル「php.ini」と「.htaccess」ファイル、「ini_set()」関数で変更が可能です。が、変更できないものもあります。

アクセスレベル

設定オプションは、設定ファイル「php.ini」と「.htaccess」ファイル、「ini_set()」関数の何れかで変更が可能ですが、設定ファイル「php.ini」でしか変更できなかったり、何ででも変更できるものがあります。この違いはアクセスレベルの違いです。以下の様に設定されています。

定数アクセスレベル
PHP_INI_USER1スクリプト内の「ini_set()」関数
PHP_INI_PERDIR2「.htaccess」ファイル
PHP_INI_SYSTEM4設定ファイル「php.ini」
PHP_INI_ALL7上記全て

PHP_INI_PERDIR | PHP_INI_SYSTEM」のように、「|(バーティカルライン)」(ビット和演算子)によって複数設定されているものもあります。「PHP_INI_USER | PHP_INI_PERDIR | PHP_INI_SYSTEM」と「PHP_INI_ALL」は等価です(「1」+「2」+「4」=「7」なので)。

注:これらの定数は、スクリプト内で参照出来るものではありません(マニュアル上でのみ定義されているものです)。

ini_get_all()」関数が返す配列の、キー「access」の値(整数)がそのオプションのアクセスレベルを表しています。

PageTop


PHPその他に関する情報を出力する

phpinfo()関数
bool phpinfo([int 範囲])
PHPその他(サーバに関する事からCookie情報に関する事まで)に関する情報を出力します。
「範囲」には、次の8つの定数が指定出来、また「|(バーティカルライン)」(ビット和演算子)で複数連結して指定出来ます。

INFO_GENERAL」(PHPが動作するサーバの情報等)、
INFO_CREDITS」(クレジット情報)、
INFO_CONFIGURATION」(PHPの設定情報)、
INFO_MODULES」(ロードされたモジュール及び設定情報)、
INFO_ENVIRONMENT」(環境変数($_ENV))、
INFO_VARIABLES」(定義済みの変数:EGPCS($_ENV、$_GET、$_POST、$_COOKIE、$_SERVER))、
INFO_LICENSE」(ライセンスに関する情報)、
INFO_ALL」(上記全ての情報を出力する)

デフォルト値は「INFO_ALL」です。
成功すれば「TRUE」を返します。

以下にサンプル。

<?php
    //phpinfo();
    
    phpinfo(INFO_CONFIGURATION | INFO_MODULES);
    
    /*出力結果
    省略(PHPの設定情報、ロードされたモジュール及び設定情報が出力されます)
    */
?>

PageTop


設定オプションの値の取得/設定

get_cfg_var()関数
mixed get_cfg_var(string ディレクティブ)
PHPの設定ファイル「php.ini」で設定されたオプションの値を返します。失敗した場合は「FALSE」を返します。
「ディレクティブ」に「cfg_file_path」を指定し、設定ファイル「php.ini」が使用されている場合にその位置を返します。
ini_get()関数
string ini_get(string ディレクティブ)
指定した「ディレクティブ」の値を返します。エラー時には空文字列を返します。
真偽値を表す「On/Off」が設定されている場合は、それぞれ「"1"」と「""(空文字列)」が代わりに返されます。
ini_set()関数
mixed ini_set(string ディレクティブ, string 設定値)
指定した「ディレクティブ」に「設定値」をセットし、成功すれば変更前の値を、失敗すれば「FALSE」を返します。
スクリプトが終了した時点で、設定値は元の値に戻ります。

以下にサンプル。

<?php
    if(get_cfg_var("cfg_file_path") === false)
        echo "設定ファイル「php.ini」は使用されていません。<hr />";
    else
        echo "[php.ini] ".get_cfg_var('cfg_file_path'), "<hr />";
    
    echo ini_get('include_path'), "<br />";
    echo get_cfg_var('include_path'), "<hr />";
    
    echo 'To ".:/hodenasu"<br />From "',
          ini_set('include_path', '.:/hodenasu'), '"<hr />';
    
    echo ini_get('include_path'), "<br />";
    echo get_cfg_var('include_path');
    
    /*出力結果
    [php.ini] C:\WINDOWS\php.ini
    ---------------------------------------------------------
    .;c:\php\pear;c:\php\cli\pear;c:\html\_incs_
    .;c:\php\pear;c:\php\cli\pear;c:\html\_incs_
    ---------------------------------------------------------
    To ".:/hodenasu"
    From ".;c:\php\pear;c:\php\cli\pear;c:\html\_incs_"
    ---------------------------------------------------------
    .:/hodenasu
    .;c:\php\pear;c:\php\cli\pear;c:\html\_incs_
    */
?>

PageTop


ini_get_all()関数
array ini_get_all([string 拡張子])
全ての設定オプションを配列で返します。
「拡張子」を指定すれば、それに関するもののみ返します。

以下にサンプル。

<pre>
<?php
    # 「ini_set()」関数で設定可能なものを抽出する
    foreach(ini_get_all() as $directive => $option_arr){
        if($option_arr['access'] & 1)
            $ini_arr[$directive] = $option_arr;
    }
    
    print_r($ini_arr);
    
    echo '<hr />';
    
    # "mysql"に関するもののみ出力
    print_r(ini_get_all("mysql"));
    
    /*出力結果
    Array
    (
        [allow_url_fopen] => Array
            (
                [global_value] => 1
                [local_value] => 1
                [access] => 7
            )
        [arg_separator.output] => Array
            (
                [global_value] => &
                [local_value] => &
                [access] => 7
            )
        …
        [include_path] => Array
            (
                [global_value] => .;c:\php\pear;c:\php\cli\pear;c:\html\_incs_
                [local_value] => .;c:\php\pear;c:\php\cli\pear;c:\html\_incs_
                [access] => 7
            )
        …
        [zlib.output_handler] => Array
            (
                [global_value] => 
                [local_value] => 
                [access] => 7
            )
    )
    ---------------------------------------------------------
    Array
    (
        [mysql.allow_persistent] => Array
            (
                [global_value] => 1
                [local_value] => 1
                [access] => 4
            )
        [mysql.connect_timeout] => Array
            (
                [global_value] => 60
                [local_value] => 60
                [access] => 4
            )
        …
        [mysql.trace_mode] => Array
            (
                [global_value] => 
                [local_value] => 
                [access] => 7
            )
    )
    */
?>
</pre>

PageTop


実行中のファイルの最終更新時のタイムスタンプを得る

getlastmod()関数
int getlastmod(void)
実行中のファイル(つまりこの関数を記述したファイル)の最終更新時のタイムスタンプを返します。エラー時は「FALSE」を返します。

以下にサンプル。

<?php
    echo '最終更新日:', date('Y年m月d日 H時i分', getlastmod());
    
    /*出力結果
    最終更新日:2004年08月01日 17時53分
    */
?>

PageTop


ロードされたモジュールを調べる

get_loaded_extensions()関数
array get_loaded_extensions(void)
ロードされたモジュールの名前を配列にして返します。
extension_loaded()関数
bool extension_loaded(string モジュール)
指定した「モジュール」がロードされているか否かを真偽値(TRUEFALSE)で返します。

以下にサンプル。

<pre>
<?php
    print_r(get_loaded_extensions());
    
    echo '<hr />';
    
    $loaded_arr["curl"]  = extension_loaded("curl");
    $loaded_arr["gd"]    = extension_loaded("gd");
    $loaded_arr["mysql"] = extension_loaded("mysql");
    $loaded_arr["xml"]   = extension_loaded("xml");
    
    foreach($loaded_arr as $name => $load){
        $str = $load ? 'ロードされました。' : 'ロードされていません。';
        echo '['.$name.'] は'.$str.'<br />';
    }
    
    /*出力結果
    Array
    (
        [0] => standard
        …
        [16] => gd
        [17] => mbstring
        [18] => pdf
        [19] => pgsql
        [20] => namazu
    )
    ---------------------------------------------------------
    [curl] はロードされていません。
    [gd] はロードされました。
    [mysql] はロードされました。
    [xml] はロードされました。
    */
?>
</pre>

PageTop


定義済みの定数を得る

get_defined_constants()関数
array get_defined_constants(void)
定義済みの定数を配列にして返します。配列のキーが定数名、要素が定数の値です。

以下にサンプル。

<pre>
<?php
    define('HODENASU_PHP', 'ほでなすPHP');
    
    print_r(get_defined_constants());
    
    /*出力結果
    Array
    (
        [E_ERROR] => 1
        [E_WARNING] => 2
        [E_PARSE] => 4
        [E_NOTICE] => 8
        [E_CORE_ERROR] => 16
        [E_CORE_WARNING] => 32
        [E_COMPILE_ERROR] => 64
        [E_COMPILE_WARNING] => 128
        [E_USER_ERROR] => 256
        [E_USER_WARNING] => 512
        [E_USER_NOTICE] => 1024
        [E_ALL] => 2047
        [TRUE] => 1
        [FALSE] => 
        [ZEND_THREAD_SAFE] => 1
        [NULL] => 
        …
        [HODENASU_PHP] => ほでなすPHP
    )
    */
?>
</pre>

PageTop


モジュールの関数名を得る

get_extension_funcs()関数
array get_extension_funcs(string モジュール)
指定した「モジュール」で定義されている関数の名前を配列にして返します。

以下にサンプル。

<pre>
<?php
    foreach(get_loaded_extensions() as $module)
        $module_funcs_arr[$module] = get_extension_funcs($module);
    
    print_r($module_funcs_arr);
    
    /*出力結果
    Array
    (
        [standard] => Array
            (
                [0] => constant
                [1] => bin2hex
                [2] => sleep
                [3] => usleep
                [4] => time
                …
                [432] => output_reset_rewrite_vars
            )
        …
        [mysql] => Array
            (
                [0] => mysql_connect
                [1] => mysql_pconnect
                [2] => mysql_close
                [3] => mysql_select_db
                …
                [63] => mysql_table_name
            )
        …
        [gd] => Array
            (
                [0] => gd_info
                [1] => imagearc
                [2] => imageellipse
                …
                [81] => imagecolormatch
            )
        …
    )
    */
?>
</pre>

PageTop


作成日:2004年07月30日 最終更新日:2004年08月01日
【印刷モード風モード で表示】