michihide's blog

技術メモおよび雑感

Apache起動とCLI起動における、PHP の実行環境の違いを調べてみた

概要

項目 Apache(libphp5.so) CLI(/usr/bin/php) 備考
Server API Apache 2.0 Handler Command Line Interface php_sapi_name()で判定可能
Configuration File (php.ini) Path /etc /etc -c で制御可能
Loaded Configuration File /etc/php.ini /etc/php.ini -n で制御可能

$GLOBALS

<?php echo (nl2br(var_dump($GLOBALS)));

<?php var_dump($GLOBALS);

メンバー名 Web(apache2handler) CLI(cli)
_GET [ ] [ ]
_POST [ ] [ ]
_COOKIE [ ] [ ]
_FILES [ ] [ ]
argv (なし) [ ]
argc (なし) 0
_ENV [ ] [ ]
_REQUEST [ ] [ ]
_SERVER (後述) (後述)

$_SERVER:WebとCLIいずれにも含まれるもの

  • $GLOBALS に含まれるものは除いています。

メンバー名 Web CLI
DOCUMENT_ROOT 絶対パス ""
PATH "/sbin:/usr/sbin:/bin:/usr/bin" "/usr/lib64/qt-3.3/bin..."
PHP_SELF DOCUMENT_ROOT からの相対パス ファイル名
REQUEST_TIME int(1433378049) int(1433390080)
REQUEST_TIME_FLOAT float(1433390080.484) double(1433378049.3198)
SCRIPT_FILENAME スクリプトの物理パス名 ファイル名
SCRIPT_NAME DOCUMENT_ROOT からの相対パス ファイル名

$_SERVER:Webのみに含まれるもの

  • REDIRECT_STATUS
  • REMOTE_{ADDR,PORT}
  • SERVER_{ADDR,ADMIN,NAME,PORT,PROTOCOL,SIGNATURE,SOFTWARE}

$_SERVER:CLIのみに含まれるもの(大半は /bin/env 由来)

'_' , CVS_RSH , G_BROKEN_FILENAMES , HISTCONTROL , HISTSIZE
HOME, HOSTNAME , LANG, LESSOPEN, LOGNAME, LS_COLORS, MAIL,
OLDPWD, PATH_TRANSLATED, PWD, QTDIR, QTINC, QTLIB
SHELL, SHLVL, SSH_{ASKPASS, CLIENT, CONNECTION, TTY},
TERM, USER, XDEBUG_CONFIG