CLI起動とcron起動の違い
$ cat _server.php #!/usr/bin/php <?php print_r($_SERVER);
このようなPHPスクリプトで挙動を観察してみた。
まずはコマンドラインから起動。
$ ./_server.php Array ( [HOSTNAME] => atlas.example.com [TERM] => xterm [SHELL] => /bin/bash [HISTSIZE] => 1000 [NLS_LANG] => JAPANESE_JAPAN.AL32UTF8 [SSH_CLIENT] => 10.28.1.30 62948 22 [SSH_TTY] => /dev/pts/2 [USER] => m-hotta [LS_COLORS] => no=00:fi=00:di=01;33:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jpg=01;35:*.png=01;35:*.gif=01;35:*.bmp=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.png=01;35:*.mpg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35: [MAIL] => /var/spool/mail/m-hotta [PATH] => /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/sbin [INPUTRC] => /etc/inputrc [PWD] => /home/m-hotta/lc_view/progs [LANG] => en_US.UTF-8 [SSH_ASKPASS] => /usr/libexec/openssh/gnome-ssh-askpass [SHLVL] => 1 [HOME] => /home/m-hotta [LOGNAME] => m-hotta [CVS_RSH] => ssh [SSH_CONNECTION] => 10.28.1.30 62948 10.27.4.26 22 [LESSOPEN] => |/usr/bin/lesspipe.sh %s [G_BROKEN_FILENAMES] => 1 [_] => ./_server.php [OLDPWD] => /home/m-hotta [ORACLE_HOME] => /usr/lib/oracle/10.2.0.3/client/lib [PHP_SELF] => ./_server.php [SCRIPT_NAME] => ./_server.php [SCRIPT_FILENAME] => ./_server.php [PATH_TRANSLATED] => ./_server.php [DOCUMENT_ROOT] => [REQUEST_TIME] => 1291857301 [argv] => Array ( [0] => ./_server.php ) [argc] => 1 )
次はこのようなcronを仕掛けて、
m-hotta@gtr:~$ crontab -l MAILTO=hotta@example.com HOME=/home/m-hotta LANG=ja_JP.UTF-8 SUDO=/usr/bin/sudo RM=/bin/rm MV=/bin/mv */1 * * * * $HOME/lc_view/progs/_server.php
これで飛んできたメールの中身がこれ。
Array ( [SHELL] => /bin/sh [MAILTO] => hotta@example.com [USER] => m-hotta [RM] => /bin/rm [PATH] => /usr/bin:/bin [SUDO] => /usr/bin/sudo [PWD] => /home/m-hotta [MV] => /bin/mv [LANG] => ja_JP.UTF-8 [SHLVL] => 1 [HOME] => /home/m-hotta [LOGNAME] => m-hotta [_] => /home/m-hotta/lc_view/progs/_server.php [ORACLE_HOME] => /usr/lib/oracle/10.2.0.3/client/lib [PHP_SELF] => /home/m-hotta/lc_view/progs/_server.php [SCRIPT_NAME] => /home/m-hotta/lc_view/progs/_server.php [SCRIPT_FILENAME] => /home/m-hotta/lc_view/progs/_server.php [PATH_TRANSLATED] => /home/m-hotta/lc_view/progs/_server.php [DOCUMENT_ROOT] => [REQUEST_TIME] => 1291857241 [argv] => Array ( [0] => /home/m-hotta/lc_view/progs/_server.php ) [argc] => 1 )
コマンドラインでの実行に比べて、かなり情報が欠落しているのがわかる。
HOSTNAMEやSERVER_NAMEは、必要であればcrontabの中で設定してやる必要がありそう。