最近はTwitterのBOTを作っているのですが、BOTを定期的につぶやかせるにはcrontabが必須です。crontabで相対パスが含まれたPHPスクリプトをそのまま実行すると、正しく動いてくれません。crontabでの実行時はカレントレディレクトリが変わるようなのです。そのため、パスに関しては気を使う必要があります。スクリプトに絶対パスを書くのも汎用性が落ちるので$_SERVER[‘DOCUMENT_ROOT’]を使おうと思ったのですが、どうやら空になってしまうようです。以下は空になってしまうことを確認するためのコードです。
include.phpは読み込まれる用のスクリプトです。$bodyに$_SERVER[‘DOCUMENT_ROOT’]の値を格納します。
include.php
[php]
cron.php
[php]
[/php]
上記のスクリプトをブラウザから実行するとちゃんと$_SERVER[‘DOCUMENT_ROOT’]の値がメールで送られてきますが、crontabで実行したものは空のメールが送られてきます。つまりはcrontabで実行した場合には$_SERVER[‘DOCUMENT_ROOT’]をうまく取得できていないことになります。