カテゴリー別アーカイブ: PHP

[ロリポップ!] 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 以降・・・・三項演算子のま・・・かの部分をな・・・・・・ともできる・・・・になりました。 ・・・・・・・・・・・・・」

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

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

 

[PHP] クラス名、関数名、変数名の命名ルールのメモ

自分流の命名ルールを忘れてしまいがちなのでメモ。

【クラス名】・・・先頭及び各単語の頭文字を大文字に。
(例)
Layout
ResultsLayout
DataBaseDataManager

【関数名】・・・小文字で記述。単語はアンダーバーで繋ぐ。
(例)
get_details()
set_js_top()

【変数名】・・・小文字で記述。単語はアンダーバーで繋ぐ。
(例)
$price
$new_car_id

【定数】・・・大文字で記述。
(例)
$TAX
$MAX_WEIGHT

【ファイル名】・・・小文字で記述。単語はアンダーバーで繋いでもよい。
(例)
index.php
add_form.php
newcarresult.php