====== PHP - Pydio(AjaXplorer) ======
===== はじめに =====
ここでの解説はPydio 5.04、PHP 5.4.13を前提にしています。
==== セットアップ ====
サーバー上の任意の場所に設置して以下の2ファイルにLocale定義を加える。
=== conf/bootstrap_conf.php ===
/*
* If you have a charset warning, or problems displaying filenames with accented characters,
* check your system locale and set it in the form lang_country.charset
* Example : fr_FR.UTF-8, fr_FR.ISO-8859-1, fr_FR.CP1252 (windows), en_EN.UTF-8, etc.
*
* Windows users may define an empty string
* define("AJXP_LOCALE", "");
*/
//define("AJXP_LOCALE", "en_EN.UTF-8");
//define("AJXP_LOCALE", "");
define("AJXP_LOCALE", "ja_JP.UTF-8");
=== conf/bootstrap_context.php ===
//Windows users may have to uncomment this
//setlocale(LC_ALL, '');
setlocale(LC_ALL, 'ja_JP.UTF-8');
Windowsサーバーは""でもいいみたいなことが書いてあるが、空にすると設定画面でユーザー情報の編集が行えなくなったため、ja_JP.UTF-8とするのが無難と思われる。
==== ワークスペースの追加 ====
Windows環境ではワークスペース作成時に「Character Encoding」に**CP932**を設定しないとマルチバイト文字を使ったファイル名が文字化けする。
(但し、これだけではまだPHPのbasename関数の不具合による文字化けも発生するため後述する方法等で修正が必要)
{{:php:ワークスペース新規作成1.png|}}
{{:php:ワークスペース新規作成2.png|}}
==== basename関数の不具合による文字化け対策 ====
ファイル名の先頭にマルチバイト文字を使っていると先頭の方だけ化けたり、不可解な現象が起きた。色々調べていると、PHPのbasename関数にバグがあることが判明。以下の方法で、独自の**getBaseName**ファンクションを定義し、すべてのbasenameを使っている箇所を置換することで回避できた。
**core/classes/class.AJXP_Utils.php**の適当な箇所に独自の**getBaseName**ファンクションを定義。
public static function getBaseName($path)
{
$allElements = explode('/',$path);
$dirElements = explode('/',dirname($path));
$basename = array_diff($allElements,$dirElements);
return implode($basename);
}
**basename**関数を使用しているファイル(.phpに限る)を全検索して以下に置換。
AJXP_Utils::getBaseName(...)