PHPのスーパーグローバル変数の一部はcronでは動かないんだってばよ
AMIを使っていくつか作成したインスタンス(AWS)からホスト名を取得して、それを別サーバーに渡す処理を作ろうとしました。
で、ホスト名は以下のスーパーグローバル変数を使用して取得出来ました。
めでたしめでたし。
あとはこれをcronで回せばお終いっと♪
が、cronを実行してログを確認したところ、エラーが返ってきたのです。
ファイルのパスとかを確認しても確実に合ってる。
何故にと思いググってみると、$_SERVER['SERVER_NAME']はcronでは動かないというショッキン&ファッキンな事実を目の当たりに。
ガ━━(゚Д゚;)━━━ン!!!!!
仕方ないので別の方法(any other way)を探すことに。
調べた結果、以下で取得出来るらしい。
試してみると、Private IPが返ってくる。
今回僕は外部サーバーとファイルのやりとりを行いたかったので、
Private IPではなく、Public IPがほしーのです。
他には、unixコマンドを使って、無理やりexecで動かすという方法もあるようですが、パフォーマンスに影響が出るというのと、あまりクールじゃないイメージがあるのでスルー。
結局、こんなんで時間かかり過ぎても無意味なので、
不本意ですがベタにdefineで定義することに。。
色々調べたが無理っぽいので、不本意だけどベタで書くか。
— Y.Kmatz (@Matsukolittle) December 15, 2014
この辺りの解決策はないものか。。
※追記
有り難いことに、色々な方から「はてブ」のコメントでアドバイスを頂きました。
結論としては、cronでcurlを使って別のPHPファイルを呼び出し(http経由)、
そのPHPファイルでホストを取得する方法。
これがベストな解かなと思いました。
ありがとうございました!
- 作者: 小川雄大,柄沢聡太郎,橋口誠
- 出版社/メーカー: 技術評論社
- 発売日: 2010/11/12
- メディア: 大型本
- 購入: 32人 クリック: 1,065回
- この商品を含むブログ (60件) を見る