[ロリポップ!] PHPがブラウザでは動くが、cronでは動かない(ハマリ度約3時間)

3時間くらいハマリましたね。(見栄張ってるんで実際は5時間くらいハマってたと思います)

phpで書いたデータをDBに突っ込むプログラムが、

ブラウザでは実行できるんだけど、cronでは動かない。(実際にはプログラムは実行されてたんだけど、DBには突っ込まれていなかった、って感じ)

今回のハマりポイントは2つあります。

1つ目は、ロリポップ!のPHP設定でphp5.3を使用する設定していたんだけど、cronの場合はこの設定が反映されるわけではない。cronでphp5.3を使うにはパスを書く必要があった。プログラムの1行目に以下のように。(ロリポップ!cronの設定

#/usr/local/php5.3/bin/php

2つ目のポイントは、プログラムの中にphp5.3以降で有効になった記述方法を使っていたということ。この内容はコレです↓

$oppai = (get_oppai() ?: 0);

「三項演算子」というやつです。この、?と:の間を省略する形はphp5.3からできるようになった文法だったのです。そりゃオッパイゲットできなかったわけです。

なんでこのことに気づいたか。

それは、PHPのオンラインマニュアルで流し読みしていた時に瞬間視記憶としてある文章が頭に残っていたからです。その文章とは

「・・・・・・PHP 5.3 以降・・・・三項演算子のま・・・かの部分をな・・・・・・ともできる・・・・になりました。 ・・・・・・・・・・・・・」

これやーーーーーーって感じでした。

これ、たまたま気づけたけど、実際はもっとハマリ度高めだと思いますね。

 

Be Sociable, Share!

[ロリポップ!] PHPがブラウザでは動くが、cronでは動かない(ハマリ度約3時間)」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。