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