カテゴリー
CentOS6.x phpmyadmin

[CentOS6] phpMyAdminの「mcrypt 拡張をロードできません。PHP の設定を確認してください」

yumでインストールしたphpMyAdmin。途中は端折るけど、「mcrypt 拡張をロードできません。PHP の設定を確認してください」のエラーが消えない。

$ php -v
# php -v
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/module.so' - /usr/lib64/php/modules/module.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 5.3.3 (cli) (built: Feb 22 2013 02:51:11) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

色々ググッた結果このエントリーを発見

「mcrypt 拡張をロードできません。PHP の設定を確認してください」

# vi /etc/php.d/mcrypt.ini 
; Enable mcrypt extension module
extension=mcrypt.so

こんなトラップが仕掛けられているとは恐れ入る。

カテゴリー
CentOS6.x perlモジュール インストールメモ

[Perl][CentOS6] Net::SSLeayがインストール出来ない時

openssl-develをインストールしてからインストールする。

sudo yum install openssl-devel
cpanm Net-SSLeay
カテゴリー
CentOS5.x CentOS6.x インストールメモ

CentOSにyumでmecabをインストールする

どうやらcentosではmecab単体のパッケージが提供されていないので、groongaをインストールする。

2.5. CentOS — groonga v3.0.3ドキュメント

groongaのリポジトリを追加
% sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
groongaのトークナイザーにmecabを使う
% sudo yum install -y groonga-tokenizer-mecab
================================================================================
 Package                   Arch     Version                     Repository
                                                                           Size
================================================================================
Installing:
 groonga-tokenizer-mecab   x86_64   3.0.3-0.el6                 groonga    18 k
Installing for dependencies:
 mecab                     x86_64   0.996-1.el6                 groonga   2.3 M
 mecab-ipadic              x86_64   2.7.0.20070801-6.el6.1      groonga    13 M

Transaction Summary
================================================================================
Install       3 Package(s)

mecab本体と辞書がインストールされます。

もしかするとgroonagリポジトリ追加して、yum install mecab mecab-ipadic で良かったかも。groonga必要だからいいけど。

カテゴリー
Mojolicious

mojoliciousでSSLページヘリダイレクトさせると無限ループしてしまう問題

問題点

この問題は Mojoliciousでhttps(SSL)専用ページとhttp専用ページの振り分けをroutesのbridgeを使って行うを実装した時に起こる問題です。

件のエントリーの実装でもスタンドアロンのサーバで公開する場合には問題にならないのですが、Nginx等のリバースプロクシの後ろにアプリケーションサーバを置いて運用する場合に問題が起きます。

通常、webサーバであるNginxとクライアントの間ではSSL通信を行い、バックエンドのアプリケーションサーバ(Starman等)とNginxの間では通常のhttpで通信すると思います。

           SSL通信
クライアント   ---   Nginx
                     |     http通信
                   Starman

この場合だと、件のエントリーの

  # SSL onry routes
  my $ssl_rotes = $routes->bridge->to(
    cb => sub{
      my $self = shift;
 
      my $req = $self->req;
      return 1 if $req->is_secure;
      
      $self->redirect_to($req->url->to_abs->scheme('https'));
      return;
    }
  );

ようにschemeで判定してhttps~にリダイレクトする場合、Nginxとアプリケーションは常にhttpで通信しているのでリダイレクトが無限ループしてしまいます。

Nginxとアプリケーション間をSSLにすればよいのですが、(アプリケーション側の)ポートを開けたり指定しなくてはならなくなったりと色々面倒なことになりそうです...。

対策

Nginxの設定でリダイレクトを使うか、SSLの場合はリンクをhttpsで指定するかしか無さそう。

例えばstartupの中で下記のようなhelperを定義して、

  # helper method
  $self->helper(
    url_for_http => sub {
      my $self = shift;      
      my $url = $self->url_for(@_)->to_abs->scheme('http');
      return $url;
    }
  );
  $self->helper(
    url_for_https => sub {
      my $self = shift;      
      my $url = $self->url_for(@_)->to_abs->scheme('https');
      return $url;
    }
  );

templateで

<%= link_to url_for_http('/') => begin %>httpを強要<% end %>
<%= link_to url_for_https('/ssl_onry') => begin %>セキュアなページへのリンク<% end %>

のように使うしか無いのかな。

カテゴリー
WordPress

[WordPress] いろいろなソーシャルボタンを簡単に設置できるプラグイン WP Social Bookmarking Lightを好きな位置に表示する

ソーシャルボタンをブログに設置するのにいちいち各ソーシャルサービスのdevサイトから作るのは意外と面倒。WordPressのプラグインでいいのがないか探していたらこれが中々よいので導入してみました。

WP Social Bookmarking Light

ソーシャルボタンを好きな位置に表示する

なぜかスクリーンショットで紹介されていますが、写経するとこんな感じ。

<?php
if(function_exists("wp_social_bookmarking_light_output_e")){
  // Using your setting the service in admin page.
  wp_social_bookmarking_light_output_e();
  // Using the service written here.
  wp_social_bookmarking_light_output_e('hatena, facebook_like, evernote');
}
?>

プラグインのソースを見ると、

function wp_social_bookmarking_light_output_e( $services=null, $link=null, $title=null )
{
....
}

となっており、引数に wp_social_bookmarking_light_output_e(services, link, title)とすればindexページでも各エントリー用のソーシャルボタンが設置できそう。設定画面でindexページにも表示することが可能なのですが、表示する場所が固定されてしまうので、引数を指定してtemplateをカスタマイズする。

外観 → テーマの編集から対応するtemplate(index.phpやsingle.php、archive.php、search.php等)に下記コードを挿入する。

挿入するコード
<?php
if(function_exists("wp_social_bookmarking_light_output_e")){
  wp_social_bookmarking_light_output_e('', get_permalink( $id ) , $post->post_title);
}
?>

WP Social Bookmarking Lightの設定

設定 → WP Social Bookmarking Lightの設定で位置の項目をNoneにする。

注意点

テーマをアップデートするとカスタマイズした内容は消えるので注意。