このサイトは株式会社オープンソース・ワークショップの旧サイトです。
新サイトを参照していただけますようお願いいたします。
https://opensource-workshop.jp/
お知らせ
NetCommons開発TIPS
NC1.xから2.4.0.xへの移行
こんにちは。牟田口です。
NC1.xから2.4.0.xへの移行をする機会があったので、
メモを残しておきます。
--- 環境
windows8.1
XAMPPlite 1.6.2
--- NCMigration1.0.3を使う
Get NCMigration1.0.3 for Windows
--- 準備NC1
・NC1.xは NetCommons1.1.4 にする
・サイト閉鎖中にする
--- 準備NC2
・NetCommons2.4.0.0.zipを用意する
・NetCommons2.4.0.0を同じサーバの別ディレクトリにインストール
・サイト閉鎖中にする
--- 準備NCMigration
・NCMigration1.0.3を同じサーバの別ディレクトリに設置
--- サイト構成
NC1 ⇒ http://localhost/
NC2 ⇒ http://localhost/nc2/
NCMigration ⇒ http://localhost/NCMigration/
--- データ移行
http://localhost/NCMigration/
・「同意する>>」押下
http://localhost/NCMigration/index.php?action=entry
NetCommons1.1ルートディレクトリ:C:/Projects/xampp_lite/htdocs
NetCommons1.1管理者ログインID:(NC1の管理者ID)
NetCommons1.1管理者パスワード:(NC1のパスワード)
NetCommons2.4ルートディレクトリ:C:/Projects/xampp_lite/htdocs/nc2
NetCommons1.1管理者ログインID:(NC2の管理者ID)
NetCommons1.1管理者パスワード:(NC2のパスワード)
「設定内容の確認>>」押下
http://localhost/NCMigration/index.php
全てOKなら
「データ移行開始>>」押下
--- エラー1
「データ移行開始>>」押下後、下記URLになって白画面のまま動かない。
http://localhost/NCMigration/index.php?action=result
--- 対応1
・NCMigration1.0.3
\NCMigration1.0.3\templates_c\ にsmartyの古いファイルが残っていて、マイグレーション実行できなかった。
⇒ 古いファイルを消せば解消した。
--- エラー2
データ移行中に下記エラーで止まる。
INSERT INTO netcommons2_pages_users_link(`room_id`,`user_id`,`role_authority_id`,`createroom_flag`,`insert_time`,`insert_site_id`,`insert_user_id`,`insert_user_name`,`update_time`,`update_site_id`,`update_user_id`,`update_user_name`) VALUES(?,?,?,?,?,?,?,?,?,?,?,?);:Array ( [room_id] => 9615 [user_id] => 6d2ec6f4f918347aef5cfb189bfedcd8d85ff44d [role_authority_id] => 4 [createroom_flag] => 0 [insert_time] => 20150327233503 [insert_site_id] => 0621068e454f23fc44c714e8eaef6f27f41b2662 [insert_user_id] => 6f08a38bcb67340f22bb7122d5e4ebdbe8c4c58d [insert_user_name] => XX5200 [update_time] => 20150327233503 [update_site_id] => 0621068e454f23fc44c714e8eaef6f27f41b2662 [update_user_id] => 6f08a38bcb67340f22bb7122d5e4ebdbe8c4c58d [update_user_name] => HA5217 ) :Duplicate entry '9615-6d2ec6f4f918347aef5cfb189bfedcd8d85ff44d' for key 1:C:\projects\xampp_lite\htdocs\NCMigration\model\utility.php:393
--- 対応2
NC2のテーブル「netcommons2_pages_users_link」で本来重複しないはずのデータが重複していた。
エラーメッセージ「Duplicate entry '9615-6d2ec6f4f918347aef5cfb189bfedcd8d85ff44d' for key 1」
移行元のNC1テーブル「nc1_rooms_members_link」を確認した処、ルーム参加データに重複があったため、
重複データを削除した処、解消した。
--- エラー3
移行が完了したけど、日本語が文字化けしていた。
--- 対応3
本来、MYSQL側の文字コード設定を EUC になっていれば文字化けしない。
しかし、手元の古いxamppのmysqlに設定が反映されないため、
暫定対応で、NC1のDB接続は、SET NAMES 'ujis' を強制的に行うようにした。
\NCMigration\model\database.php
/**
* NC1データベースコネクションオブジェクト設定
*
* @param string $dsn データソース名称(dbType://user:password@host/dbName?new)
* @return void
* @access public
*/
function setNC1ADOConnection($dsn)
{
$dsn = $this->addDSNNew($dsn);
$this->nc1ADOConnection = NewADOConnection($dsn);
if (!empty($this->nc1ADOConnection)) {
// 追記箇所
$adoConnection = $this->nc1ADOConnection;
if (strpos($adoConnection->dataProvider, "mysql") === 0) {
$serverInfo = $adoConnection->ServerInfo();
if (floatval($serverInfo["version"]) >= 4.01) {
$adoConnection->Execute("SET NAMES 'ujis';");
}
}
$this->nc1ADOConnection->SetFetchMode(ADODB_FETCH_ASSOC);
}
}
これで文字化けは解消した。
NetCommons2のキャビネットで圧縮ファイルを展開した時、文字化けする。
こんにちは。
永原です。
NetCommons2のキャビネットで圧縮ファイルを展開した時、文字化けするケースがありました。
ファイル名やフォルダ名が日本語の場合に文字化けするようです。
現象としては、変なフォルダができたり、ファイル名が文字化けしたりしました。
原因はPear のライブラリのマルチバイト対応です。
修正方法は以下の通りです。
maple/includes/pear/File/Archive/Reader.php
の
getStandardURL 関数を修正します。
// Japanese file-name decompress bug mod by nagahara@opensource-workshop.jp
//$std = str_replace("\\", "/", $path);
$std = preg_replace ("/\\//" ,"/",$path);
以上
会員検索したら xmlがダイアログに表示された場合の対処方法
こんにちは。牟田口です。
netcommons2 で会員検索したら xmlがダイアログに表示されて
結果が表示されない問題がでました。
対処方法を書きます。
### 画面
### 環境
$ php -v
PHP 5.6.8 (cli) (built: Apr 15 2015 15:07:09)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
NetCommons2.4.2.0
### 対応
NetCommons2.4.2.1にバージョンアップすると解消します。
### 感想
PHP 5.6.8、NetCommons2.4.2.0
PHP 5.6.10、NetCommons2.4.2.0
でこの症状が出たので、おおよそPHP5.6系でNetCommons2.4.2.0を使うと出るようです。
PHP5.5系以下であれば下記の方法もあるようです。
### その他方法1
php.iniのdefault_charset = UTF-8 をコメントアウトする。
システム管理>開発者向け(タブ)>PHPデバッグ
のチェックを外す。
ではでは。
validateはpostであればviewでもactionでも動く
こんにちは。牟田口です。
主に自分メモです。
- validateはpostであればviewでもactionでも動く。
- viewにpostする場合、maple.iniに下記追記をする。
[RequestCheck]
request = BOTH
ではでは。
共通コンポーネントのコンストラクタで、他の共通コンポーネントがセットできずnull問題に対応
こんにちは。
プログラムを担当している牟田口です。
共通コンポーネントのコンストラクタで、他の共通コンポーネントを参照したけどnullのままで使えない問題を対応しました。
--- \webapp\modules\fruit\action\dicon.ini (OKパターン)
ichigoCommonView = "ichigo.view"
remonCommonView = "remon.view"
remonCommonAction = "remon.action"
--- \webapp\modules\fruit\action\dicon.ini (NGパターン)
remonCommonView = "remon.view"
remonCommonAction = "remon.action"
ichigoCommonView = "ichigo.view"
--- \webapp\components\remon\Action.class.php
class Remon_Action {
var $_db = null;
var $_container = null;
var $_request = null;
var $_remonCommonView = null;
var $_ichigoCommonView = null;
/**
* コンストラクター
*
* @accesspublic
*/
function Remon_Action() {
$this->_container =& DIContainerFactory::getContainer();
$this->_db =& $this->_container->getComponent("DbObject");
$this->_request =& $this->_container->getComponent('Request');
$this->_remonCommonView =& $this->_container->getComponent('remonCommonView');
$this->_ichigoCommonView =& $this->_container->getComponent('ichigoCommonView');
var_dump($this->_ichigoCommonView);
// var_dump出力 OKパターン:object(Kyomu_View)
// var_dump出力 NGパターン:null
}
}
NGパターンの場合、ichigoCommonViewのクラス生成前に、remonCommonActionのクラス生成が始まるため、nullのままと推察。
ichigoCommonViewのメソッドを呼び出そうとしたけど、nullのため、下記エラーが発生した。
Fatal error: Call to a member function getXXXX() on a non-object
問題解決の参考になれば幸いです。