いやね。PHPをcronで動かすと動かないことがありまして。
該当のファイルをwebからアクセスするといけると。

そんな時は、とりあえず適当にfopenでファイル書き出しで

  • どこまで動いているか
  • サーバ変数の値($_SERVER[SERVER_NAME])とかがそもそもとれてる?

を調べますが、結構、$_SERVER[SERVER_NAME]とかで開発環境、ステージング、本番と設定を振り分けてると、

バックグラウンドだと$_SERVER[SERVER_NAME]が取れなくて、DB情報とか取得出来てなかったりすることがあります。

なので

<?php
// バックグラウンド(cron)から実行の場合は手動設定
if(!$_SERVER[SERVER_NAME]){
 $path = dirname(__FILE__);
 if(strstr($path,/var/www/html/)) {
  define(URL, http://exsample.com);
 }
		
}

みたいな風にして、サーバ名が取れなかったらファイルパスで本番かどうかを判断する。
※全ての環境でパスが同じ場合はアレですが。


あとDBに接続する場合は、うまく行かない場合

<?php
mysql_connect("localhost:3306", "user", "password")

↑みたいな感じでポート番号もつけたりしたらうまくいくかも。
localhostをIPにしてみたりとか。

CPIの場合はphp5として実行するとmysql4に接続するときデフォルトがmysql5なので・・・
とかある。
なのでphp4.4.7として実行してあげたら3306指定しなくてもmysql4につながった