2012年5月29日火曜日

Symfony sfWidgetFormChoiceに設定した項目を取得する方法

sfWidgetFormChoiceに設定した配列をactionで取得する方法

$form = new SampleForm();
$choiceArray = $form->getWidget('ウィジェット名')->getChoices();

これで、$choiceArrayに連想配列が格納されます。

2012年5月27日日曜日

さくらレンタルサーバにOpenPNEをインストール中にbus errorで失敗

タイトルの通り、bus errorが発生。
原因が分からない。

「bus error」でググッてもメモリの不正書き込みやら、ハードの故障やらと
直接の原因っぽい物がない。

ん~どないしようということで、独自に開発したプラグインを取り除いて
インストールをしてみると・・・インストール成功!!

ということは、開発したプラグインに原因があるのか?!
と思い、プラグインのソースを数世代前のものに戻して
再度、OpenPNEをインストールすると、インストール成功!!

ただ、ソース自体にあまり差分は無いので、一体何故にbus errorが発生するのか・・・
と、ここで開発したプラグインが重くてインストールに失敗しているのか?と思い立つ。

んで、以下の手順で無事にインストールすることができました。
①OpenPNE3.6に何も手を加えないでインストール。
②インストール後に、OpenPNEのpluginsフォルダに独自作成したプラグインを配置
③php symfony doctrine:build --all --and-load でDBの初期化
④事前に取得したバックアップデータを流す。

と、これで無事にインストールできました。
ふぅ、なんか疲れました。

2012年5月25日金曜日

さくらレンタルでsymfonyコマンドが効かないときの対処

さくらレンタルサーバにOpenPNEをインストールしようとしたときに
たまにsymfonyコマンドが効かない?時がある。

例えば、symfony cc と入力しても実行されない。。。
理由は分かりませんが、こんな時は
①ローカル環境にOpenPNEをもってくる。
②ローカル環境にてsymfony ccをする。
③ローカル環境のOpenPNEを圧縮してさくらサーバにftp。

と、こんな感じで一度ローカル環境にてsymfony ccをすれば解決できることがあります。
ちょいと釈然としませんが、一応経験則ということで。

2012年5月21日月曜日

DoctrineのexecuteとfetchOneの違い

返ってくる結果が1件のみのSQLを発行する際、executeを使ってましたが
fetchOneというのもあるので少々違いを調べてみました。

execute
→結果をオブジェクト配列で返す。

fetchOne
→結果をオブジェクトで返す。

なるほど、fetchOneはオブジェクトで返されるから、get~で返り値にアクセスできる!
個人的にはfetchOneの方が楽に返り値を取得できるように思う。
今後は、一件が確定のSQLはfetchOneを使おう。

ちなみに、今回参考にしたサイトは下記です。
第8章 - モデルレイヤーの内側 (Doctrine)

2012年5月14日月曜日

さくらレンタルサーバから携帯アドレス宛にメールを送信

さくらレンタルサーバに設置したOpenPNE3.6.1から携帯アドレス宛に招待メールを送付したところ
Softbankには届くのに、auには届かない・・・何故!!
と思い少々調べてみると、既に先駆者の方が解決方法を書いていました。
若年管理職その弐。 OpnePneの招待メールがau宛に届かなかったら

なるほど、SPFで送信者認証しないと携帯の設定ではじかれるのか。。。
と、確認のためauのなりすまし拒否設定を解除すると、すんなりと招待メールを受信。
やっぱり、原因はSPFが未設定だったからですね。

気を取り直して、さくらレンタルサーバからゾーンの編集を行おうとしましたが
編集ボタンが非活性になっている!!
何故!
ん~初期ドメインではだめなのか??
仕方がないのでサポートにTELしてみました。
結果は、案の定、初期ドメインではサーバのゾーン編集ができないとのこと
SPFを設定したかったら独自ドメインを取得してくださいな候。とのこと。
まぁ、一番安いドメインで年間1800円で取得できるからいいか。
さて、明日は独自ドメイン取得して、ゾーン編集してみます!

2012年5月13日日曜日

MySQL5 実行SQLをログに出力する方法

動作確認でSQLの確認をしたかったので調べてみました。
運用環境ではサーバに不可をかけるので要注意です。

1.my.iniの[mysqld]セクションに下記を追記
  log="query.log" ←出力するファイル名を指定

2.mysqlを再起動
  mysql\data配下にquery.logが作成され、そこにログが出力される。

と、意外と簡単に設定できました。