Pages

2014年12月11日木曜日

Git PULLした時に既にファイルがあった場合

経緯

app/tmp/ を .gitignore の中で指定していて、ある日app/tmp/sample/data1.txt を追加しました。
ずっとプッシュした気になっていたのですが、できておらず。。

そこで他の人が app/tmp/sample/data1.txt が無い事に気づいたプッシュしてくれました。

その後私がPULLするとこんなメッセージが。。

error: Untracked working tree file 'app/tmp/sample/data1.txt' would be overwritten by merge.  Aborting


内容は結局同じなので、app/tmp/sample/data1.txt を削除してからPULLしたら解決と。。

2014年10月28日火曜日

CakePHP2 セットアップ ライブラリ部分のみサブモジュールとして管理

CakePHPのセットアップ

$ git init
$ git pull https://github.com/cakephp/cakephp.git
$ rm -fr .git
$ rm -fr .gitignore
$ rm -fr lib
$ git init
$ git add .
$ git commit -m 'first commit'

$ git submodule add https://github.com/cakephp/cakephp.git
$ git submodule init
$ git submodule update

$ vi app/webroot/index.php
$ vi app/webroot/test.php

//define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'lib');

define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'cakephp' . DS . 'lib');

$ vi app/Console/cake.php

$install = $root . DS . 'lib';

$install = $root . DS . 'cakephp' . DS . 'lib';


$ git add .
$ git commit

$ git remote add origin [repository]
$ git push -u origin master

プラグインの追加

$ git submodule add git://github.com/cakephp/debug_kit.git app/Plugin/DebugKit
$ git submodule add git://github.com/CakeDC/search.git app/Plugin/Search

2014年4月24日木曜日

CakePHP2 Securityコンポーネントでハマった事

Securityコンポーネント使ったらログインフォームだけが何故かblackholeに行ってしまう現象が発生。。
追跡してみるとフィールドをハッシュ化しているところがどうやら問題。

/lib/Cake/Controller/Component/SecurityComponent.php
line: 238

の $this->validatePost と $this->_validatePost($controller) をダンプしてみた
ところ true, false となっていた。

_validatePost 内を確認

line: 514 の前で

$token, $check をダンプしてみると中身が違う。。

$fieldListを確認してみるもちゃんと取得できている様子。。

何故だ。。。。

まさかとは思うけど発行側で??

と思って、

/lib/Cake/View/Helper/FormHelper.php

を今度はチェックしてみる。

どうやら

public function end($options = null)

で発行しているようなので、

line: 519

にある

$out .= $this->secure($this->fields);

の前で $this->fields を確認。

var_dump($this->fields);

空っぽ。。。

何で。。。

で、viewファイルをずっと眺めていると。。

$this->Form->create(...
$this->form->text(...

あれ。。 もしかしてformだといけてる風になる?? と思って修正。

$this->Form->create(...
$this->Form->text(...

無事動きましたとさ。。 form が何のために使えるのは調べてないけど、エラーにしてくださいよ。。

2014年4月3日木曜日

phpMyAdmin メニューにトリガが表示されない

phpMyAdmin を利用している時に権限があるはずなのに、メニューにトリガが表示されない現象が発生。

早速追跡~

Menu.class.php の _getTableTabs() を見てみるとどうやら、

PMA_Util::currentUserHasPrivilege(
    'TRIGGER',
    $this->_db,
    $this->_table
)

の部分でfalseが返っている。

次に Util.class.php の currentUserHasPrivilege を見ると

if ($db !== null) {
    // need to escape wildcards in db and table names, see bug #3566
    // (wildcard characters appear as being quoted with a backslash
    //  when querying TABLE_SCHEMA.SCHEMA_PRIVILEGES)
    $db = str_replace(array('%', '_'), array('\%', '\_'), $db);
    /*
     * This is to take into account a wildcard db privilege
     * so we replace % by .* and _ by . to be able to compare
     * with REGEXP.
     *
     * Also, we need to double the inner % to please sprintf().
     */
    $query .= " AND '%s' REGEXP"
        . " REPLACE(REPLACE(TABLE_SCHEMA, '_', '.'), '%%', '.*')";
    $schema_privileges = $GLOBALS['dbi']->fetchValue(
        sprintf(
            $query,
            'SCHEMA_PRIVILEGES',
            $username,
            $priv,
            self::sqlAddSlashes($db)
        )
    );
    if ($schema_privileges) {
        return true;
    }
} else {
    // There was no database name provided and the user
    // does not have the correct global privilege.
    return false;
}


ここでtrueが返ってくるはずが返ってこない。。

どうやら
$db = str_replace(array('%', '_'), array('\%', '\_'), $db);
でDB名に % _ が入っている場合にエスケープするみたい。

コメントアウトを見てみると英語は解らないけど、どうやら
LIKE検索などする時の問題に対応するために行っている(MYSQLの問題?)
何かあったなそんなのが。。

結局、DB名を変更して無事解決でした。

2014年3月27日木曜日

FacebookページIDを調べる方法

auの Facebookページ のURLは
https://www.facebook.com/aubyKDDI
です。

この Facebookページ の ID を確認するには

http://graph.facebook.com/[username]

つまり

http://graph.facebook.com/aubyKDDI

にアクセスする。
するとJSON形式で帰ってくる値の中に id が含まれているので、それが FacebookページID となる。

http://graph.facebook.com/[username]

Facebook API フレンドのアイコン画像

Facebook API を利用してフレンド一覧でcoverで取得できると思ったのに。。
me/friends?fields=id,name,cover
取れなかったよ。。

で調べたらIDだけあれば取れるみたい。。
https://graph.facebook.com/[userId]/picture?type=large

2014年1月11日土曜日

CakePHP2 Shell 実行時にモデルでエラーが発生する

/app/Console/Command 内に **Shell.php ファイルを作成して
uses にモデルを追加したところで試しに

$this->out('Hello');

でも出力しようと試したところで、下記のようなエラーが発生。

Fatal error: Class 'I18n' not found in /***/***.php on line 462
Fatal Error Error: Class 'I18n' not found in [/***/***.php, line 462]

モデルの中を全てコメントアウトすると表示されなかったので、
メソッド毎に徐々にコメントアウトを解除すると、 afterFind が原因である事が判明。

誤:
public function afterFind($results) {}

正:
public function afterFind($results, $primary = false) {}

上記修正で解決。

Followers