PHP5.3とそれ移行の配列の落とし穴
サイトマップを生成するプログラムを作っていた。
ローカル環境はbent-centos7.2を利用しているので、必然的にPHP7系をインストールしている。
$array_xml([ 'loc' => 'https://hogefuga.mofu/aaaa/bbbb/', 'lastmod' => date('Y-m-d'), 'changefreq' => 'weekly', 'priority' => '0.4' ]);
まあなんてこと無い配列を書いた。
ローカルではデータの書き出しまでOKと言う事で本番にアップしてコマンドラインからプログラムを実行すると
[root@yakiu]# /usr/bin/php create_sitemap.php PHP Parse error: syntax error, unexpected '[', expecting ')' in ディレクトリ
ん…?ローカルと同じソースコードで書いたのに動かない。PHPのバージョンが違うからって事で調べるとどうやら中括弧を使った配列指定は5.4からの仕様で5.3は未対応。
って事でソースを5.3バージョンに書き直し。
$array_xml(array( 'loc' => 'https://hogefuga.mofu/aaaa/bbbb/', 'lastmod' => date('Y-m-d'), 'changefreq' => 'weekly', 'priority' => '0.4' ));
明示的に配列ですよって言うことをカッコで書くだけなんでそこまで改修はなかったもののPHPのバージョンでやられるとはおもわなんだ。
#それとcronで実行する際はフルパスで書かないと動かない。
require_once("./fugafuga");
って書き方をしていると読み込めずに動かない。しかもcrontabだからエラーが把握出来ない。
そういう時はcronの実行に対して
*/30 * * * * /bin/sh /home/hoge/fuba.sh >>/tmp/analog.log 2>>/tmp/analog-err.log
実行コマンドの後ろにログを設定すると、エラーがある場合は記述される。
この辺丸々抜けてた。。