kohanaのauthモジュールでくっそハマった件

諸事情によりkohanaのバージョンを3.2から3.3.2(最終版)に上げて、
その誤差を吸収していたら、むちゃむちゃ大きくハマった。

作ったCMS管理画面にログインできなくなった。

原因を先に書くと、ディレクトリ名やファイル名を変更した際に
ちゃんとクラス名を同時に書き換えなかったせいで、継承が狂って
「こんなクラスないよ?」って言われていただけなんだけれど。

PHP Fatal error:  Class ‘XXXXXXXXXXXXXXX’ not found

みたいなエラーをちゃんと吐いてくれればいいのに、

Error reading session data.

としか出てこない。

おまけにこれでググるとえらいたくさん文献が見つかる。
発狂寸前だった。

で、とりあえずどこかのページで見つけた方法にたどり着いたわけだが…

bootstrap.php内で、kohana::init()としている中で

‘errors’ => false

と追記するとちゃんとapache側にエラーログが出るようになるので、
そこで始めて上記のPHP Fatal errorとお目見えできる。

これ多分今後も重要。

既にkohana phpが終わっていた事も知らなかった件について

備忘録。

そもそも本州を離れて九州にいる時点で情報収集能力はガタ落ちしているわけだが、
それでもまさか自分がメインとして使っていたPHPフレームワークの開発が終了していることまで
知らなかったとは…。

もうろくしましたね。

http://forum.kohanaframework.org/discussion/12509/final-releases-of-kohana-beginning-of-ohanzee
どうやらコミュニティ内で、2014/4/9に終了宣言されていた模様。
今後も遺産として…みたいな事が書かれているようですね(英語は得意ではない。)

PHPが5.3の壁を超える時、kohanaは終わるんでしょう。
その終わった先は…何で追えばいいんでしょうね。
まさか自分が廃業するわけにもいきませんし。

FuelPHPに移行するのが一番賢いのかもしれませんが…
というか時代は既にJavaのものなのかもしれませんが…

さて。これで今の案件に有用な情報がほぼ入ってこないのが確定した。
自力でなんとかするしかないのか。
困った困った。

久しぶりに開発環境を触ってみたら…

いやぁハマったハマった(汗

開発環境(macbook)のmysqlが自動でアップデートされていたようで
(homebrewの設定どうしてあったか覚えてないなぁ…まぁいいや)

その関連でmysql_upgradeかけずに動かしていたわけですが…

エラーでまくってました。
直そうとしたらmysqlが起動もしなくなりました。

原因はエラーログの所有者が勝手に_mysqlに変わっていたことだったので
さっさと自分に所有者を変更して再起動で助かりました。

mysql_upgradeをかけてwarningを1つずつつぶしていますが…

timestampの変更やばいですね。
結構手軽に使っていたので、意識してcreate文を作らないと。

また勝手に自動更新されて上手く動かなくなるパターンなのが見え見えなのでw

やっとfacebookとwordpressが繋がった。

私的備忘録としてwordpressでlaboやってて、
生存報告的にfacebookもやっていて、
繋がれば楽なのにと思っていたら、
wordpressにfacebook公式のプラグインがあるではないか。

…と思って設定していたが、全くうまく動かなかった。
仕方がないので色々探して、やっと設定できた。

http://wandonoweb.com/facebook-for-wordpressの、social-publishingの設定がうまくいかない方、あな/

というか、このプラグイン自体が凄いスピードでバージョンアップしているようで、
ネットで記事を探しても古いものしか見つからない。
相当探して、やっと見つけて、やっと設定できたよ…orz

簡単に画面遷移図が作りたい。

ということで模索開始。

blockdiagなるものを入れてみることに。
公式?:http://blockdiag.com/ja/blockdiag/introduction.html

前提条件としてpython2.4以降(3.xは未対応)とか色々あるらしい。
とりあえず当方の環境ではpythonから入れないといけないが、
下記でうまくいった…はず。
※色々あって当方はfreetype2を自力で入れているから楽だったのです。
freetype2を入れてない人はbrewのformulaを書いてfreetype2を入れるのが
良いのかもしれません。

brew install python
sudo easy_install pil
sudo easy_install blockdiag

で、インストールが終わったらテキスト形式で簡単に記載して、

/usr/local/share/python/blockdiag sample.diag

とかやってやれば、simple.diagと同じパスにsimple.pngとして画面遷移図になってくれるみたい。

画面遷移図の書き方も非常に簡単で、

blockdiag{ a -> b;}

みたいな書き方をするだけ。
書式にかなり惹かれた。

あとは、毎回/usr/local/share/python/blockdiagとか書くのが面倒なので、
.bashrcに下記のように追記してやって、ターミナル再起動すれば話が早くなる。

# for python(homebrew)
export PATH=/usr/local/share/python:$PATH

これで、さっきの長いコマンドが

blockdiag sample.diag

で動くようになった。

macでPHP開発環境をつくる 細かい設定

色々とモジュールやら何やらは入ったが、じゃあ実際開発…となると
更に色々設定しないといけないので、そのあたり。

・hosts
hostsは

sudo vi /private/etc/hosts

で書き加えた後に

sudo dscacheutil -flushcache

でdnsのcacheをクリア。
その後ping飛ばして、実際に動くかどうかチェックという感じでしょうか。

macでmkpasswd

brew install expect

こんだけ。
私的には、
mkpasswd -2 -l 12
とかって感じでよく使ってた記憶がありますね。

eclipseが起動しなくなった

winをmacに移行したり、色々やった弊害なのか、
それとも開発環境を急に膨らませた弊害なのか、
eclipseが起動しなくなった。

.snapも見つからなかったので、潔くworkspace内の.metadataを削除して
起動するようになった
…というものの、プロジェクトを全てインポートし直さないといけなかったが。

とりあえず痛手になる程ではなかったのでひと安心。

windowsのノートPCを卒業する

今までは、ノートPC2台を使用していたんだが、
ついに1台に統合する日がやってきた…という所でしょうか。

…まぁ、まだ作業途中ですが。

今までは
【Windows7】hp ProBook 4515s
【Mac os X】MacBook Pro (15-inch ,Mid 2012)
の2台を使用していたのだが、
「Parallels Desktop」なるものを使用すれば、
Windows環境をそっくりそのままMacに移行できる。
…というか、できた。

Parallels Desktop
http://trial.parallels.com/?terr=jp&lang=jp

要は仮想PCですね。
でもこれ、むっちゃ凄いです。
何が凄いって、既に稼働しているWindows環境をそのまま持ってこれる。

これをインストールして、Windows側には
Parallels Transporter Agent for Windowsをインストールする。
ココの下のほうにある)

で、後はMacはParallels Desktopを、WinはParallels Transporter Agentを起動して
Windowsをそっくりそのままmacに移動させてくる。

…とは言っても、むちゃむちゃ時間かかります。
うちの環境では16時間くらいかかりました。

そして、入れた後にバーチャルPCがネットに繋がらなくて少し苦労しました。
ここに解決方法があったので、手順通りにデバイスマネージャからドライバ削除をして
ちゃんとネットに繋がりました。

で、ネットに繋がると同時にMac側にも恩恵が!
MacのDock内に「Windows 7 Applications」とか出て、一発でWindowsのアプリが起動できます。
仮想PCが起動していない場合、仮想PCの立ち上げから自動でやってくれます。

仮想Windows7のライセンス認証も普通に通ったし、
今の所なんにも問題なし!

これで、ProBook 4515sには完全なバックアップ機として暫く眠ってもらえるようになりました。
そして完全にメイン機はMacBook Proになりましたね。

…必要になったらMacBook Proの中で疑似ProBook 4515sを動かすんですけどね。

いやぁ、BootCamp使うか?とか色々考えていたんですが。
多分こっちが正解だと思う。早めに正規版に上げたいなぁ。

EC-CUBEのインストール要件チェッカー

今回、freetype2の一件で時間的&精神的にダメージを食らったので、
同じ事を繰り返さない様に、簡易チェッカーを作ってみた。

実行するとこんな感じになる。

このチェッカーについては、一応ちゃんと動作試験済み。
ただ、「じゃあ実際に必須ライブラリ・任意ライブラリがないと動かないのかどうか」は
知りません。試す気もないですw

適当に保存してPHPとして動かせば、結果がすぐに見れます。

<?php
/**
*  EC-CUBE ソフトウェア要件チェック
*  Copyright(c) 2013 project-toa Inc. All Rights Reserved.
*  @version 201304070000
*  ソフトウェア要件を一発でチェックする為のものです。
*  適当にウェブサーバにアップして閲覧して下さい。
*/
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<title>EC-CUBE ソフトウェア要件チェック</title>
<style type="text/css">
<!--
div#body{margin:20px 50px;}
h1{font-size:24px;}
p{margin:10px;}
div#caution {
width:600px;
font-size:12px;
border:1px solid #000000;
}
div.border{
width:424px;
border:1px solid #000000;
margin-bottom:10px;
}
div.float{
width:200px;
height:20px;
padding: 5px;
float:left;
border:1px solid #000000;
}
br.both{
clear:both;
}
-->
</style>
</head>
<body>
<div id="body">
<h1>EC-CUBE2.12系 ソフトウェア要件チェック</h1>

<div id="caution">
※このチェックツールは、2013/04/07時点のEC-CUBE ver2.12系に対する<br />
ソフトウェア要件に基づいて制作されています。<br />
最新のソフトウェア要件については、<a href="http://www.ec-cube.net/product/system.php" target="_blank">公式サイト</a>より確認して下さい。<br />
また、「WEBサーバ」「言語」「データベース」の項目につきましては別途ご確認下さい。
</div>

<p>1.必須PHPライブラリ</p>
<div class="border">
<div class="float">pgsqlまたはmysql</div>
<div class="float">pgsql : <?php if(function_exists('pg_connect')){ ?>○<?php }else{ ?>×<?php }?> / mysql : <?php if(function_exists('mysql_connect')){ ?>○<?php }else{ ?>×<?php }?></div>
<br class="both" />

<div class="float">gd</div>
<div class="float"><?php if(function_exists('gd_info')){ ?>○<?php }else{ ?>×<?php }?></div>
<br class="both" />

<div class="float">freetype2</div>
<div class="float"><?php if(function_exists('gd_info')){$gd_info = gd_info();if($gd_info['FreeType Support']){ ?>○<?php }else{ ?>×<?php }}else{ ?>×<?php }?></div>
<br class="both" />

<div class="float">mbstring</div>
<div class="float"><?php if(function_exists('mb_get_info')){ ?>○<?php }else{ ?>×<?php }?></div>
<br class="both" />

<div class="float">zlib</div>
<div class="float"><?php if(function_exists('gzopen')){ ?>○<?php }else{ ?>×<?php }?></div>
<br class="both" />

<div class="float">ctype</div>
<div class="float"><?php if(function_exists('ctype_alpha')){ ?>○<?php }else{ ?>×<?php }?></div>
<br class="both" />

<div class="float">spl(PHP5.3.0未満の場合)</div>
<div class="float"><?php if(function_exists('spl_classes')){ ?>○<?php }else{ ?>×<?php }?></div>
<br class="both" />

<div class="float">session</div>
<div class="float"><?php if(function_exists('session_cache_expire')){ ?>○<?php }else{ ?>×<?php }?></div>
<br class="both" />
</div>

<p>2.推奨PHPライブラリ</p>

<div class="border">
<div class="float">JSON</div>
<div class="float"><?php if(function_exists('json_encode')){ ?>○<?php }else{ ?>×<?php }?></div>
<br class="both" />

<div class="float">xml</div>
<div class="float"><?php if(function_exists('xml_set_object')){ ?>○<?php }else{ ?>×<?php }?></div>
<br class="both" />

<div class="float">OpenSSL</div>
<div class="float"><?php if(function_exists('openssl_sign')){ ?>○<?php }else{ ?>×<?php }?></div>
<br class="both" />

<div class="float">cURL</div>
<div class="float"><?php if(function_exists('curl_init')){ ?>○<?php }else{ ?>×<?php }?></div>
<br class="both" />

<div class="float">hash</div>
<div class="float"><?php if(function_exists('hash')){ ?>○<?php }else{ ?>×<?php }?></div>
<br class="both" />

<div class="float">mhash(PHP5.3.0未満の場合)</div>
<div class="float"><?php if(function_exists('mhash')){ ?>○<?php }else{ ?>×<?php }?></div>
<br class="both" />

<div class="float">mcrypt</div>
<div class="float"><?php if(function_exists('mcrypt_generic')){ ?>○<?php }else{ ?>×<?php }?></div>
<br class="both" />

<div class="float">zip</div>
<div class="float"><?php if(function_exists('zip_open')){ ?>○<?php }else{ ?>×<?php }?></div>
<br class="both" />
</div>
</div>
</body>
</html>