スタッフブログ

  • 最新配信
  • RSS

xupdateで"SSL certificate problem: unable to get local issuer certificate"となった時の対処法

Ryuji : XOOPS » モジュール 2013/10/3 10:06

Blogger's Avatar

XOOPS X(ten)では、xupdateというモジュールやテーマのダウンロードとアップデートをしてくれるモジュールがあります。(次期XOOPS Cube Legacyコアにも取り込まれる予定です)

このxupdateでモジュール等をダウンロードしようとしたときに、サーバによっては次のように"SSL certificate problem: unable to get local issuer certificate"というエラーがでてダウンロードに失敗することがあります。

このときは、xupdateの一般設定で「cURL: SSLホスト認証をしない」を「はい」に変更すると正常にダウンロードできるようになります。

さくらのレンタルサーバスタンダードでこの症状に遭遇しましたので、さくらのレンタルサーバご利用の肩は設定変更して試してみてください。

PHP5.4対応とhtmlspecialchars

Ryuji : PHP 2013/10/2 10:49

Blogger's Avatar

数年前はPHP5.3対応のご相談を受けていたのですが、最近はPHP5.4対応のご相談をよく受けるようになりました。

PHP5.4対応の一番の問題として htmlspecialchars関数 の問題があります。この関数はXSS対策に良く用いられる関数なので、Webシステムで利用されないことはまずありえません。

そのhtmlspecialchars関数がPHP5.4以降、文字コードの指定がないとデフォルトで文字コード「UTF-8」だと判断して動作するようになりました。

これが問題になるのはかつてPHPプログラムで文字コード「EUC-JP」をメインに使ってた頃のプログラムです。(UTF-8以外だとダメなのでSJISとかももちろんダメですけどね)

XOOPSもかつてはEUC-JPを使うのが主流でしたので、その頃に構築したサイトはPHP5.4へ移行するとこの問題にぶちあたります。

この問題が発症すると症状として何が起きるかというと文字列の抜け落ちが発生します。XSS対策でサニタイズしている文字列なんかはまるごと抜け落ちるので、たとえば、掲示板とかで枠線とか外観は正常に表示されるのに書き込みメッセージが全く表示されないというような症状になります。

対処法としては、XOOPSなら全般設定で言語を「japanese」から「ja_utf8」へ変更することで回避できます。

他のシステムでも内部エンコードをutf-8にしてあげればほぼ回避できると思います。.htaccessで設定変更できるなら下記の様にします。

php_value mbstring.internal_encoding UTF-8

ちょっとしたプログラムであれば、これだけで問題解決することもあると思います。

# もちろんDBとの接続やファイルの読み書きがある場合は、そのやりとりの文字コード変換をあわせていく必要はありますけどね。

Gitポケットリファレンス読んでみました。

Ryuji : 技術全般 2013/9/27 14:11

Blogger's Avatar

私が初めてさわったバージョン管理システムはMS-DOS用の「RCS」というシステムでした。今からもう20年以上も前の話です。

その後オープンソースと関わるようになってから「CVS」「Subversion」を使うようになりました。

そして今使ってるバージョン管理システムが「Git」です。といってもあれこれ検討してSubversionからGitへうつったわけでなく、周囲の開発者さんたちが「Git便利!」って言ってほぼ全員Gitへ移行してたり、XOOPS CubeのリポジトリがSubversionからGitHubへ移行したりとなって、ようやく自分でも使い始めた格好です。

そうやって使い始めたGitですが、Subversionと同じ程度には使えるようになってきたのですが、他の開発者さんの使い方を観察するともっと色々便利なコマンドや使い方があるようなので、一通りざっくり把握してみようと思って、「Gitポケットリファレンス」をパラパラと読んでみました。



開発中の様々な要望に応える方法がほとんどありそう



というわけで「Gitポケットリファレンス」を毎朝数ページずつ読んでみたんですがすごいですねGit!

Subversion使ってたときに「あー、○○したいんだけど、うまい方法ないんだよなぁ」って思うことがほぼ解決してます。
というか、開発中に遭遇するバージョン管理にまつわるあれこれに対応する方法が網羅されてそうな印象です。

たとえば 、ファイルの各行の変更履歴を出力する "git blame"

プログラムの不具合が発生したときにプログラムコードを追っかけてると「あれ?なんでこんな処理してるんだろ?」って疑問に感じるコードにあたることがあります。

そんなときに過去バージョンをチェックして**いつごろその処理が書かれたのか**を調べて、関連するRedmineのチケットや議事録をもとに「そもそもどう意図で行われた変更か」というのを調査して、意図にあったコードになってるか確認します。

この「いつごろその処理が書かれたのか」を調べるのがgit blameを使うと簡単にできちゃうんですよね。

git blameで「このファイルの何行目から何行目はいつ更新された?」を調べられるので先ほど書いたシチュエーションではめっちゃ役立ちそうです。

この git blameをはじめとしてほんとかゆいところに手が届くバージョン管理システムになってますね。

というわけで、最近gitを使ってみた感触やこの本から得られた知識から考えてもこれからのバージョン管理システムは git がよさそうだなと思いました。

NetCommonsアドオンモジュールセミナー「NetCommons3で遊んでみよう」に参加

Ryuji : NetCommons 2013/9/24 13:27

Blogger's Avatar

最近注目しているCMS「NetCommons」のセミナーでNetCommonsの次期バージョン「NetCommons3」に触れて遊んでみようというテーマの勉強会があったので参加してきました。

ただ私は勉強会中にひとりで勝手にNetCommons3をCakePHP3.0で動かせるようにならんかチャレンジしてました(^^;

というのもNetCommons3はCakePHP2.0ベースで開発されてるんですが、CakePHPは既に3.0の開発がすすんでおり、NetCommons3のリリース時期やCakePHP3.0のリリース時期なんかを考えると、できるだけ早めにCakePHP3.0へ乗り換えをした方がよさそうだと感じたからです。

事前予想としては「あんがいすんなりいくんじゃね?」とか思ってたんですが、CakePHP3.0のコードを探すとか、App側のコードがみつからなくてカンでNetCommons3のAppコードいじってなんとかしようとしたりしてどうにもならなかったりで、最終的に動かすことができませんでした…orz

今後のために各コードの所在へのリンクはっときます。

また時間をみつけて、NetCommons3+CakePHP3.0での動作にチャレンジしたいと思います。

8月21日にNetCommonsユーザカンファレンスに行ってきました。

Ryuji : NetCommons 2013/8/30 14:33

Blogger's Avatar

「NetCommons」は国立情報学研究所で開発されてる国産CMSです。 グループウェア的にも使えるシステムに仕上がっていて私も注目してます。

image

21日の「NetCommonsユーザカンファレンス」では、東北の震災に対して どのようにNetCommonsが学校で活用されたのかの事例や 現在開発が進められている次期NetCommons「NetCommons3」についても 話しがありました。

「NetCommons3」はCakephpという人気のPHPフレームワークをベースに開発を しているそうで、現行バージョンよりもモジュールが開発しやすくなるだろうなぁと 思っています。 「NetCommons3」の正式リリース予定は2015年3月とまだまだ先ですが、 楽しみです。

少しお手伝いでブースのお留守番しながらたくさんの方にお話を聞くことができて良かったです。

image

Go-Coworkingもデモ展示。施設MAPに興味もたれた方、結構いましたねぇ。

image

午後は2会場にわかれてセッションがあったのですがたくさんの方がセッションに耳をかたむけてました。

コケロミン

ブースで一緒に留守番してくれた「コケロミン」かわいいですよ〜

"Protector detects site manipulation."と表示されたら

Ryuji : XOOPS » TIPS小ネタ 2013/8/29 18:59

Blogger's Avatar

XOOPSサイトの構築中やXOOPSサイトのリニューアル中に
トップページだけ"Protector detects site manipulation."と表示されることがあります。

これはProtectorモジュールによる簡易サイト改ざんチェックの結果、
何かしら変更があったことを知らせるメッセージです。

意図せぬ変更が勝手に行われたときに気がつくようにチェックが行われるのですが、
簡易チェックのため、意図的な変更を行ったときにも発動(誤報)することがあります。

この簡易サイト改ざんチェックですが、チェックしてるのは下記3点です。

・XOOPSをインストールしたディレクトリの更新日時
・XOOPSトップページのindex.phpの更新日時
・同じくindex.phpのinode番号

この3つの値がDBに保存されてる以前の値と異なっていたら「改ざんされたかも」
ということでトップページに"Protector detects site manipulation."を
表示するんですね。

ちょっとやっかいなのが「XOOPSをインストールしたディレクトリの更新日時」のチェック

「ディレクトリの更新日時」はファイルがアップされたり、編集されたり、削除されたときにも
更新されます。

そうすると、構築中やリニューアル作業で、.htaccessを変更したり、favicon.icoを書き換えたり、
XOOPS最新版を上書きアップロードしたときにも「ディレクトリの更新日時」は書き換わってしまいます。

●表示されてしまったときの対応策
このサイト改ざんチェックが実行されるのは、XOOPSのトップページだけで、
XOOPS_URL/user.phpは今まで通り表示できるので、こちらで管理者としてログインします。

ログイン後はXOOPS_URL/admin.phpで管理画面に入り
「Protector」→「一般設定」→「サイト改ざんチェック値」を空にして「送信」します。
これで最新データがDBに保存されます。

※ファイルの書換等を行った覚えが全くなければ、ほんとに改ざんされた可能性もありますので、ちゃんとチェックはおこなってくださいね。

●事前対策
事前にファイルUPなどの作業を行うことがわかっていれば、
「Protector」→「一般設定」→「サイト改ざんチェックを有効にする」を
「いいえ」にしておいて作業するのもひとつの手ですね。

私のWordPressとXOOPSの使い分け方

Ryuji : XOOPS » 総合的な情報 2013/8/29 18:57

Blogger's Avatar

WordPressはブログシステムとしてはじまったので、ブログをつくるには最適です。
ブログの様に時系列に記事を追加していくニュースサイトにも向いてます。

無数に存在するプラグインを組み合わせたり、プログラムを少し書き足したりすることで
実に多様なサイトを作ることができます。

ブログや中小企業の企業サイトなどはWordPressで作るのが良いと私も思います。
実際私もブログにはWordPressを使っています。

ではXOOPSはどういうときに使うのか?
判断ポイントは2つあります。

 1.会員制サイトか?
 2.プログラム開発が必要か?

つくろうとするWebサイトが会員制サイトである。会員向けサービスを提供するための
Webサイトであるというような場合は、会員制ポータルサイトシステムとして開発された
XOOPSが適しています。

またこれから構築するWebサイトで独自の機能(サービス提供型サイトでは
この機能がサイトのメインとなることが多い)が必要とされる場合も私はXOOPSを
使います。

CMS上で動くプログラムを開発する場合、覚えるべきやり方や従うべき制約などが
色々あるのすが、XOOPSでは覚えるコトや従うべき制約がかなり少ないため、
より自由に開発できるので助かってます。

 1.会員制サイトか?
 2.プログラム開発が必要か?

この2点に該当するのであればXOOPSから検討し、そうでなければWordPress等
他のシステムから検討してみるといいんじゃないかなと思っています。

新潟県上越市へ行ってきました

Ryuji : その他 2013/8/15 10:13

Blogger's Avatar

愛知県三河地方出身の龍司です。

東京に出てくる前は新潟県上越市に住んでたので、新潟出身だと勘違いされることがよくあります。

ただ親父のふるさとが新潟県上越市で私も数年住んだことがあり、さらに離婚して別れて暮らすことになった息子が上越で暮らしてるので上越市は第2の故郷とも思ってます。

そんな上越市へ息子と遊ぶために行ってきました。

今回は息子とサイクリング予定なのでロードバイクももっての移動です。

自転車持って新幹線で

...続きを読む

cubeUtilで多言語対応するときはタイトル切り詰めに注意

Ryuji : XOOPS » TIPS小ネタ 2013/4/23 9:00

Blogger's Avatar

XOOPS Cubeでは、cubeUtilというモジュールを使うことで1つのXOOPSで
複数の言語むけのサイトを構築することができます。

このとき問題になるのが、新着ブロック等でのタイトル文字列の切り詰めです。

cubeUtilで多言語対応するときに、タイトルには
「[ja]日本語のタイトル[/ja][en]English Title[/en]」
のようにタイトル欄に日本語と英語の表記を多言語用のタグをつけて登録します。

これが新着ブロック等で短くきりつめられると
「[ja]日本語のタイトル[/ja][en]English …」
のように中途半端なところで切り詰められてから、多言語対応の仕組みがうごいて、
タグが画面にでてきたり、予想外の範囲まで別言語の扱いになって画面から消えてしまうことがあります。

多言語対応のサイトを構築していて、一部のコンテンツが画面に表示されなかったり、
多言語用のタグが画面に表示されるようなことが発生したら、
どこかでタイトル切り詰めが起きてないか調べてみてください。

タイトルの切り詰めをやめれば問題が解決するはずです。

XOOPS Cubeのテーマでトップページ判定するためのPreload

Ryuji : XOOPS » プリロード 2013/4/18 14:54

Blogger's Avatar

まだtheme.html内で一発でサクッとトップページへのアクセスかを判定する方法が
なかったようなのでちょっとpreloadファイルをつくってみました。

下記コードをhtml/preload/IsToppage.class.phpとして保存します。
<?php
class IsToppage extends XCube_ActionFilter
{
    protected $isTop = false;
    public function preBlockFilter()
    {
        $this->mController->mRoot->mDelegateManager->add("Legacypage.Top.Access", array(&$this, 'topAccess'));
    }

    public function topAccess()
    {
        $this->isTop = true;
        $GLOBALS['xoopsTpl']->assign('xoops_is_top', $this->isTop);
    }
}
これだけで、theme.htmlで下記のようにトップページ判定ができるようになります。
<{if $xoops_is_top }>
トップページだよ!
<{else}>
トップページじゃないねっ
<{/if}>

スタッフブログ最新

株式会社RYUSコーポレートサイト

NetCommons

RYUS blog

LAMP

40代からのロードバイク

帰ってきた龍司流

カテゴリ一覧

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860 FAX 020-4662-1482

Copyright(c) 2012 RYUS.All Rights Reserved.