FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

WiMAX 信号強度上げ&高速化、知られていないコツ

  • 2012/03/31 13:46
  • Category: WiMAX
いままでのエントリでひとつ大事な事を書き忘れてました。WiMAX、特に利得があまり良くない?と言われるURoad-8000あたりを室内に置いてメイン回線として使う場合(あんまりいないかもしれないけど)、やりがちなのが、基地局がありそうな方向に向いた窓際に設置すること。これ、意外とダメ。

最初にTryMiMAXでUSBタイプの機材が来たとき、いろいろ家中移動して試してみたけど、一番良かったのが2Fの階段付近。で、あらかじめ予想してた2Fの街側の窓ガラス付近は、あんまりぱっとしない。次に良かったのが現在設置している1Fリビングの猫の仏壇付近。ここは窓に近いが、窓に面して設置しているわけではない。むしろ、窓ガラスに密着させると、利得が落ちる。

このあたりで言いたいことがわかったと思うけど、窓ガラスってダメらしい。なんでだろう。ガラスってアルミと同じで反射するのか?それともうち、北海道で寒冷地仕様の二重ガラスだからなのか?むしろ基地局側の壁ごしが良い感じです。もちろん鉄筋コンクリートなら別だけど、木造戸建てとかアパートとかだったら、窓ガラスではなく壁に向けて設置することも検討する価値あり。
スポンサーサイト

WiMAXで最速値更新の巻

  • 2012/03/30 21:47
  • Category: WiMAX
今日昼、NTTが来て光回線とBフレッツルータ撤去していきました。これで10年ほど付き合った有線網とはお別れ。今日からはWiMAX一本だよ頼りにしてるよUroad-8000。ということで、WiFiの輻輳もなくなったし、多少速度に変化があったかな?ということで再度計測してみました。

http://kakaku.com/bb/article/wimax/speed/
測定日時:2012/03/30 21:39:54
回線種類:UQ WiMAX
測定場所:北海道札幌市西区
測定機器:URoad-8000
下り速度:17.3Mbps
(17,271,680bps)
上り速度:0.5Mbps
(515,864bps)

念のため別テスターでも計測してみましたよ。

SPEED 2.5 (speed.rbbtoday.com)
計測日時 : 2012年3月30日金曜日 21時50分08秒
下り(ISP→PC): 16.28Mbps
上り(PC→ISP): 499kbps

速。けっこう速。とりあえずこれまでの最速値を更新しました。やっぱり複数のWiFi親が近くに混在しているのって良くなかったのかな。思いがけない結果となりました。

うお。そしてこのブログWiMAXのオフィシャルからリンクされてるじゃないの。

CakePHP用ExcelReviser拡張ヘルパー:連続帳票出力

CakePHPでExcelといえばPHPExcelなのかもしれませんが、正直あいつ遅い。使いものにならない。1000行の一覧帳票出力するのに10分とかあり得ない。ということで、私はExcelReviser派です。PHPExcelより少なくとも50倍高速です。

しかし、ExcelReviserにも弱点があります。「シート内でセルの値のコピーができないこと」「範囲指定して書式をコピーできないこと」。このために、ひとつの帳票をひとつのシートの中で連続的に出力する(縦に並べる。それが一覧表だろうが単票の連続だろうが同じ)ことが非常に面倒。

普通はどうするかというと、まずひとつの帳票を定義して、そのセル1個1個について、次の帳票の同じ場所に絶対位置指定で書式をコピーして、値をこれまた絶対位置指定で書き込んで・・・の繰り返し。何が面倒かって、n個目の帳票でのそれぞれのセル位置を都度都度、カウンタか何か利用して計算しなくてはならないこと。それに、値がない単なる飾りセルもすべてひとつずつ書式コピーしなくてはならないこと。このへんは実際にやってみると、本当に気が狂いそうになります。特に1枚で100行☓50列くらいある単票を連続して出力しようとすると泣けます。だって5000個のセルの手動コピーですよ。

なので、このあたりカバーしたCakePHP用ヘルパー作成しました。
その名も「ExcelReviserExtensionHelper」。

【機能】
雛形の書式をすべて、指定した帳票数の位置へ自動的にコピーします。
帳票の範囲内で値がない場所は自動的にコピー。
値がある場所は、値・相対位置・セル結合の指定を持つ配列を作成して突っ込んでやると、その通り生成します。

【設置】
(0) あらかじめ本家を入手してサーバに配置しておく。
(1) 25行目あたりのrequire_onceで本家のパスを指定。
(2) /app/helpers/以下にexcel_reviser_extension.phpとして保存。
(3) コントローラの$helpersにExcelReviserExtensionを追加。

【利用】
(1) 値を書くセルごとに以下のような書式で配列を作成。

$vars[] = array('type'=>'number', 'row'=>1, 'col'=>2, 'var'=>12345);
$vars[] = array('type'=>'string', 'row'=>5, 'col'=>11, 'var'=>'ほげ', 'rowspan'=>2, 'colspan'=>1);

type: stging/number
row: 列座標(開始位置からの相対位置)
col: 行座標(〃)
var: 値
rowspan: 行(縦)方向のセル結合の指定
colspan: 列(横)方向のセル結合の指定

(2) 上記配列を作ったら、以下のメソッドで書き込み。

$excelReviserExtension->addVars($sheet_cnt, $data_count, $vars, 5, 0, 2, 14);

$sheet_count: 書式の元となるシート番号(0スタート)
$data_count: 何枚目の帳票か(普通はループ値を入れます)
$vars: 上記配列
5,0: 繰り返しが始まる列・行の座標(つまりヘッダに相当する部分を除きます)
2,14: 繰り返し範囲(列数・行数)

(3) 本家で出力します。

$excelReviserExtension->reviser->reviseFile('/path/to/template.xls', 'HOGE.xls');


(4) その他本家のメソッド等は以下のように使用可能です。

$excelReviserExtension->reviser->HOGEHOGE()


以下がソースです。

/**
* ExcelReviserExtensionHelper
*
* Copyright (C) 2012 @muuri_cat All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
* Place, Suite 330, Boston, MA 02111-1307 USA
*
*/

class ExcelReviserExtensionHelper extends AppHelper {

function __construct() {
require_once(realpath(APP) . DS . 'vendors' . DS . 'excel_reviser' . DS . 'reviser.php');
$this->reviser = NEW Excel_Reviser;
$this->reviser->setInternalCharset('utf8');
}

function addVars($sheet_count, $data_count, $vars, $top_row, $top_col, $height, $width) {

// Row num check: please modify as you like.
if (($data_count * $height) + $height > 65535) {
echo('Count of vars too large.');
return false;
}

$row_start = $top_row + ($data_count * $height);
$row_end = ($row_start + $height) - 1;
$col_start = $top_col;
$col_end = $top_col + $width - 1;
$yetstr = null;

foreach ($vars as $k => $v) {

$row = intval($v['row']);
$col = intval($v['col']);
$vrow = $row_start + $row;
$vcol = $col;
$yetstr .= $vrow . ':' . $vcol . ',';

if ($v['type'] == 'string' || $v['var'] ==='') {
$this->reviser->addString($sheet_count, $vrow, $vcol, $v['var'], ($top_row + $row), ($top_col + $col), 0);
} elseif ($v['type'] == 'number') {
$this->reviser->addNumber($sheet_count, $vrow, $vcol, $v['var'], ($top_row + $row), ($top_col + $col), 0);
} else {
echo('Invalid var type passed.');
return false;
}

if (array_key_exists('rowspan', $v) && array_key_exists('colspan', $v)) {
$row_span_end = $vrow + intval($v['rowspan']) - 1;
$col_span_end = $vcol + intval($v['colspan']) - 1;
$this->reviser->setCellMerge($sheet_count, $vrow, $row_span_end, $vcol, $col_span_end);
}
}

if ($data_count > 0) {
for ($y=$row_start; $y<=$row_end; $y++) {
for ($x=$col_start; $x<=$col_end; $x++) {
if (strpos($yetstr, $y . ':' . $x) === false) {
$this->reviser->addBlank($sheet_count, $y, $x, ($y - ($data_count * $height)), $x, 0);
}
}
}
}
}

実際にExcelReviserやったことがある方なら分かると思いますが、コード量激減しますよ、これ。

PHPでファイルアップロードできない時には

  • 2012/03/27 16:15
  • Category: PHP
はいそうですよ。私はアホですよ。CakePHPでファイルアップロードできないで小一時間はまってました。原因。php.iniのupload_max_filesizeディレクティブに「100MB」って入れちゃってました。これ「100M」が正解ね。100MBだと無効=0バイトになっちゃうのね。なので$_FILESでみてみるとerrorは1番(upload_max_filesizeより大きいですよ)なのね。

CakePHPでCSV出力とファイル化されない件

  • 2012/03/27 12:51
  • Category: CakePHP
CakePHPでCSV出力するはめになりこちらのCSV Helperを使わせていただくことになりました。さくさくとhelpersにアップロードしコントローラで読み込み指定しサンプルの通りctpファイルに書いていざ実行!・・・CSVがブラウザに文字列として表示される。つまりHTMLドキュメントとして読み込まれてるわけ。ヘッダがうまく渡ってないっぽい。またCSV Helperの当該部分をいろいろ書き換えて試行錯誤してみたがダメ。ふと気がついてctpのConfigure::write('debug', 0);の記述を外してみたら「Helperの末尾で既にヘッダ出力してるからダメよ」のエラー。え?と末尾を見てみると、?>というPHPの閉じの後にスペースが入ってました・・・。ということで、既存サイトからコードをコピペダウンロードするときはスペースにまで気を配りましょうというお話。

CakePHPのビヘイビアの関数の引数でハマる件

  • 2012/03/24 21:58
  • Category: CakePHP
CakePHPではM(Model)V(View)C(Controller)それぞれで共通関数の置き場を持っている。Viewではelements, Controllerではcomponents, そしてModelではBehavior。ただしそれぞれの呼び出しは癖が異なる。特にModelにおけるBehaviorは困る。CakePHP的記法だと、Model内で$behaviors = array('なんとか')でよさそうに思うがさにあらず。$actsAs = ('Nantoka')でなくてはならない。ついでにactAsではなく、actsAsとsをつけるのを忘れがち。これを忘れると、Modelを未定義関数で呼ぶことになり、それって$this->query('その関数名')と等価に評価されるので、SQLエラーとなる。やだよこの仕様。

今日はさらに加えてハマった。ビヘイビア内で関数を作る際、Model内から直接呼ばれる場合、第1引数には必ず呼び元Modelのインスタンスが入ってくる。なので、

class HogeBehavior extends ModelBehavior {
function getHoge($aaa, $bbb) {
return $aaa;
}
}

てなビヘイビアと関数がある場合、Modelから

echo $this->getHoge(111,2222);

とか呼び出すと、てっきり「111」って表示されそうだけど、Warning (4096): Object of class Nantoka could not be converted to stringと怒られる。オブジェクトを文字列に変換できませんよ~と言っているのね。つまり$aaaにModelのインスタンス入ってしまっているのですね。なので、ビヘイビアの関数の第1引数では呼び出し元Modelのオブジェクトを受けてあげないといけません。さっきの例なら以下の通り。

class HogeBehavior extends ModelBehavior {
function getHoge($obj, $aaa, $bbb) {
return $aaa;
}
}

CakePHPでmod_rewirteが動かない件

  • 2012/03/23 12:18
  • Category: CakePHP
ということで本番サーバに複写したCakePHPアプリ、とりあえず初期画面はでるようになったが、mod_rewriteが動いてないという真っ赤な警告が。う~ん?httpd.confでAllowOverride Allあたりを確認してみたけどちゃんとしてるし、モジュールもある。なんで?なんで?・・・で、ずっと見てったら、ルートの.htaccessコピーされてなかった(´;ω;`) えーと、Windows7ってファイルコピーの時、.で始まるファイルを避けて通るの?子ディレクトリのものはちゃんとコピーできてたので不思議・・・。

CakePHPで画面が真っ白の件

  • 2012/03/23 12:13
  • Category: CakePHP
CakePHPで開発したアプリを本番サーバにコピーしたところ、画面が真っ白。何も表示されない。ルートのindex.phpに色々書いてどこまで通っているのか調べてみると、最後の行のrequireで、app/webroot/index.phpがインクルードできてない。APPとかWEBROOTとかDSといった定数ではなく、パスを直接書いてみても、ダメ。30分くらい考え込んだが、結局、file_existsで当該パスが存在するか確認したところ「否」と出たことで気がついた。あ、パーミッションだ(´;ω;`)
ということで、CakePHPで画面真っ白の際は、ルートディレクトリ以下「chown -R apache:apache」することをオススメ。

忌み嫌い続けていた筈の無欲と空虚が胸を占める

美しいうた。うつくしい声。世界がこんなひとばかりならどれだけ過ごしやすく、どれだけ早期に滅亡したろうか。
ああ 満たされないで識らないで 追いかける陰の美しさよ みなまで言うな 憧れ続けていた筈の
孤独と自由が頚を締める なんてこの世は果てしないんだろう

CakePHPで最大値を含むレコードを高速に取得

  • 2012/03/21 16:01
  • Category: CakePHP
例えばid, name, dateというテーブルがあるとする。nameごとに最大のdateのidを抜きたい。が、普通にMAX(date)としても、idは必ずしもそのdateがあるレコードのものが得られない。なので普通は内部連結とか用いるけどCakePHPは原則そのへん禁止。この例だと、いったんname+最大dateのテーブル(Bと呼ぶ)を作って、最初のテーブル(Aと呼ぶ)のnameとdateがBにあるか探して、Bのidをとってくればよさそう。だけどCakePHPではINをダブルで発行する方法がよくわからない。queryで(name, date) IN 何々と書こうとしたけど、何々を何と書けばいいか詰まった。それにINNER JOINで試しに当ててみようとSQL書いてphpMyAdminで発行したらわずか2万行弱のテーブルで数分かかった。こりゃだめだ。
なので、お得意のCONCATを使うことにした。


// 最大値を取得しつつnameとdateの連結フィールドを作ってリスト化(つまり「HOGEHOGE2012-01-01 00:00:00」とか。良い例ではない)
// ちなみにfind('list')だとCONCATの結果が取れないようなのでわざわざallで取って整形している
$l1 = $this->Hoge->find('all', array('fields'=>array('Hoge.id', 'CONCAT(Hoge.name, MAX(Hoge.date)) AS id_date'), 'group'=>'Hoge.name'));
$l2 = set::combine($l1, '{n}.Hoge.id', '{n}.0.id_date');

// 当初のテーブルも連結フィールドを作って両者接続!
$conditions['CONCAT(Hoge.name,Hoge.date) AS id_date'] = array_values($l2);
$l3 = $this->Hoge->find('all', array('conditions'=>$conditions));

もちろんMySQL限定でのお話なのでご了承ください。それにしてもMAXで引いた値がある列を最初からとってくれればこんな苦労しないで済むのにね。

CakePHPのAuthでUserのパスワードを埋める方法

  • 2012/03/19 17:19
  • Category: CakePHP
CakePHPでAuthで認証かますのに、一括してSQLにてユーザのパスワード設定してやりたい気分のときもある。平文パスワードを、/app/config/core.phpの209行目あたりに書いたであろうSecurity.saltの末尾にくっつけてやりsha1化してpassword列に収めてやる。平文パスワードがpassstr列に入っているとすると、以下の通り。

update users set password=sha1(concat("せきゅりてぃそるとのもじれつ",passstr));

あたりまえだけどこのまま実行すると全件更新されるから気をつけてね。

CakePHPでExcel_Reviserを使ってみる

仕事でPHPでExcel扱う必要があったわけですよ。事前にちょろちょろ調べていて、PHPExcelなんてよさげじゃない?ってんで少しずつテストコードとか書いて手順とか確認しつつ本番(=発注)を迎えました。で、いざ使ってみたら、確かに使えるけど、動くけど、クソ遅い。なんか重いとかじゃない。例えば5列×500行程度の、ごくごく普通のシート1枚に値を入れて出力というオペレーションで、ボタン押下から出力まで5分。5秒じゃないよ。300秒ですよ。Webアプリで5分待ちって無理無理。絶対納品できない。件数を増やして2500件程度(これが今回の標準データ数)にしたら15分くらい。とういかタイムアウト。バカ?ねえ、あんたホントに2000年代のコード?大丈夫?というので、真っ青になって、泣きながら探しました。最近泣きながらなにかしてばっかりだな。

で、見つけたのがExcel_Reviser。2008年頃に残念ながら開発が止まってしまったようだけど。しかもオフィシャルで公開停止してるのね。だけどGPLだからね。再配布先から入手したけど恐れることはなし。いろいろドキュメントを見てみると.xlsの出力をする分には十分な機能。x86_64だと動かんという説もあるけど、某所にてパッチも発見したので、まあ、大丈夫かと(この64bitの件で異様に怒ってる人見たけどなんなんだろうね)。で、実際にコード組んで(これがPHPExcelと比較にならないくらい簡潔で嬉しい)試してみる。

同じような条件で2500件出力で約5秒。普通こうでしょう。ねえ。とりあえず空白セルの書式設定とか、テンプレートの結合セルが解除されちゃう件とか扱いが大変なところを補うようにCakePHPのヘルパーとしてヘボな実装が完了したので今度公開します。

WiMAX Uroad-8000:XP最適化前と後

  • 2012/03/18 08:38
  • Category: WiMAX
先日設定したWiMAXのURoad-8000。昨日、100均で嫁がアルミ製のナベブタ見つけてくれたのでそれをパラボラにして設置。うちは山の中にあるが、どうもアンテナは街側ではなく山側にあるようで、山の方にURoad-8000を向けるとときどき緑ランプ(信号強度やや強い)になります。で、その向きに置く場合一番都合がよいのが自宅1Fのネコの仏壇裏。や~ん邪魔という先代ネコの声が聞こえます。

で、自宅2FのデスクトップPCでもこちらにつなぐようにした。例のWindowsXP最適化前が以下の状態。

http://kakaku.com/bb/article/wimax/speed/
測定日時:2012/03/18 08:30:07
回線種類:UQ WiMAX
測定場所:北海道札幌市西区
測定機器:URoad-8000
下り速度:1.2Mbps
(1,219,757bps)
上り速度:1.3Mbps
(1,333,390bps)

後の状態がこちら。

http://kakaku.com/bb/article/wimax/speed/
測定日時:2012/03/18 08:51:10
回線種類:UQ WiMAX
測定場所:北海道札幌市西区
測定機器:URoad-8000
下り速度:12.5Mbps
(12,530,528bps)
上り速度:1.3Mbps
(1,319,593bps)

JavaScriptでゼロ埋めする

JavaScriptのゼロ埋め(ゼロパディング、ZeroPadding)。
なんかゼロ埋めのエントリばっかりだぁ。

fuge = 5;
hoge = ('0' + fuge).slice(-2);

これでhogeが05となります。

WiMAX URoad-8000:XP最適化と高速化

  • 2012/03/12 23:21
  • Category: WiMAX
うち札幌の西の方の山の中なんですよ。最寄りの収容から5km以上あって、Bフレッツでも、いちばん機嫌が良いときで5Mbps。ひどい時には0.5Mbpsなんてときもまじめにありました。どうせそんなもんならADSLで十分なんだけど光収容につき利用不可。他の選択肢がない状態で数年間泣いておりました。

ところが最近、WiMAXとやらの評判が高いげに聞きまして、また機器0円・22000円キャッシュバックとも聞こえてきて、いずれ試そうと思っていた所、TryWiMAXというお試しサービスがあるとのこと。早速申し込みました。

手元に届いたのはWiMAX USB TYPE UD01SS。USB直刺しの端末。外観がしょぼすぎて全然期待せずにさくっと設定すませて、ちょろっとスピードテストやってみたら・・・おお!いきなりの7Mbps超!これはというので鼻息を荒くして場所をいろいろ変えて試してみたところ、最善の環境(自宅2F)では12Mbps近く出るではないですか!テスト即日完了。速攻で返却して、即、本チャン申し込みしましたよ。もちろん端末無料&キャッシュバックキャンペーンで。

数日後、いや本日なんですが、手元に端末届きました。URoad-8000。こんどはUSBではなく、コロンつるんとした、数年前の女性向けガラケーみたいな外観。早速設定。USBタイプよりドライバが要らない分、さらに簡単だった。さくっと接続。パソコンのすぐ横においてあるので、事前に弱いと聞いていたWiFi電波もぜんぜん問題なし。で、早速スピードテスト。ふふふ・・・・

って!0.5Mbpsって Σ(´∀`;)

仰天していろんなサイトで何度も測り直すも、せいぜい1M出るかどうか。愕然といたしました。脳裏によぎったのは、UQWiMAXに図られた・・・あのお試し端末は特別な高機能版だったんだなぁ・・・というリフレイン。家中泣きべそかきながら移動しましたよ。だってもうフレッツ解約申し込んじゃったんだよ!?どうすんのマジで!?

しかし、藁にもすがる思いでネット探索していると、ふと情報が。
XPでURoad-8000経由でWiMAX接続している場合、レジストリに何やら設定しないとベストパフォーマンスにならないとのこと。そしてその設定は、URoad8000の設定画面からバッチとして入手できるとのこと。それ見てから5秒後にはダウンロード&インストール実行。一縷の望みを託して、PCの再起動・・・スピードテスト・・・

キタ━━━ヽ(∀゜ )人(゜∀゜)人( ゜∀)ノ━━━!!

見事に出ました、11Mbps

あんまり嬉しくてパンツ脱いじゃいました。

後続の人のために情報を残しておきます。

<XPでWiMAXにURoad-8000(SHINSEI)で接続する場合、遅くなる現象とその対策>
(1) URoad8000端末の設定画面にWebでアクセス、方法は説明書に書いてあります。
(2) 「アドミニストレーション」>「システム設定」>「Windows XP用 無線LAN通信最適化」を開きます。
(3) バッチダウンロードボタンを押してファイルをダウンロード。
(4) ダブルクリックして実行、PCを再起動したら完了。
(5) ちなみにそれでも遅い場合、「ワイヤレス設定」>「周波数(チャンネル)」でチャンネル変更すると吉。

その後、URoad本体を2Fへ、パソコンを1Fへ移動して、WiFI的に厳しい環境で試験してみました。
その結果がこれ。

uroad8000-1.jpg

URoad-8000の速度向上、大成功!
この田舎で夜の混雑時間帯に8M出れば御の字ですよ。ホント。
WindowsXPでWiMAX URoad-8000等のUroadシリーズを使っていて遅い・重い・速度が低いと感じられた場合は必ずこのUroad用WindowsXP最適化パッチを適用しましょう。速度向上すること間違いありません。

Smatyで桁区切りする

  • 2012/03/12 13:06
  • Category: Smarty
Smartyで桁区切り、つまり3桁ごとにカンマを打つというやつです。
これもニーズ多いようです。
やっぱりSmarty関数ではなく単にPHP関数を呼んでるだけです。


{$num|number_format}

Smartyのゼロ埋め

  • 2012/03/12 13:01
  • Category: PHP
Smartyでゼロ埋め、いわゆるZeroPaddingをするというのは結構ニーズがあるらしいですね。
前のブログでもよくキーワードに乗ってました。
ただしSmartyではなくPHPの関数利用なのです。

数値を5桁(「1」を「00001」)にする例:


{$num|string_format:"%05d")

CakePHPのAuthのバグ

  • 2012/03/12 08:45
  • Category: CakePHP
CakePHP1.3でAuthコンポーネントを利用して、ログイン画面以外から認証を経てその画面に戻ってくる時に以下のようなエラーが発生する場合がある。

s.png


Missing Controller
Error: SController could not be found.
Error: Create the class SController below in file: app/controllers/s_controller.php
class SController extends AppController {
var $name = 'S';
}
?>
Notice: If you want to customize this error message, create app/views/errors/missing_controller.ctp


要するに「S」というコントローラがないよ、と言っている。
認証をクリアした後で、Authが元のパスに戻そうとするときにヘマをしているらしい。

例えば「http://www.hoge.com/fuge/」にCakePHPをインストールして「fuges」コントローラ(FugesConrtoller)でAuthコンポーネントによる認証を設定している場合、fuge/fuges/indexとかfuge/fuges/fooとかに直接アクセスしようとすると、一回認証画面に飛ばされて、OKだったときに元のパスにリダイレクトするのだが、その時に元のパス(/fuges/index)がなぜか「/s/index」に変換されてしまっている。

正直年度末でソース追ってる余裕ないけど、間違いなく、CakePHPインストールディレクトリとコントローラ名を同じ単語にしてはダメっぽい。

保存してるパスからインストールディレクトリを抜いたり置換したりのあたりで正規表現とか失敗してるのではないかな。

めちゃくちゃ忙しいこの時期に夜中までハマった。
この件で英語で検索しても何のヒントも得られなかったから一応英語でもメモしておこう。



If you have below error on CakePHP when set Auth component, you must set controller's name different from site path.

works wrong: http://hoge.com/fuge/fuges/index
works good: http://hoge.com/fuge/fuuuuuges/index

[Error messages]
Missing Controller
Error: SController could not be found.
Error: Create the class SController below in file: app/controllers/s_controller.php

Pagination

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。