baserCMS

[baserCMS]インストール時STEP4でエラーが起きてしまう場合の対処(PCRE Versionの問題)

More than 3 years have passed since last update.

サーバ上でインストールする際、STEP4でエラーが起きて、インストールを完了できない場合が稀にあります。

また、フォームのメールのチェックやメール送信で、正しいメールアドレスでもエラー扱いになる場合があります。


発生するタイミングと環境


  • インストール時のSTEP4でエラーが起きて、インストール作業を完了できないとき


    • インストール時のユーザー作成時に正しいメールでもエラー扱いになってしまい、管理者ユーザーが生成されていない状態になる



  • フォームのメールのチェックやメール送信で、正しいメールアドレスでもエラー扱いになるとき

  • baserCMS 3.0.1 以降で上記症状が起きる


環境


原因

PCREのバージョンが低いときに起きます。

PCRE (Perl Compatible Regular Expressions)

PCRE Library Version 6.6 06-Feb-2006

上記バージョンの場合、正規表現で\p{L}などが使えない状態にあります。

PCRE (Perl Compatible Regular Expressions)

PCRE Library Version 8.32 2012-11-30

上記バージョンだと問題ないようです。(一例)


対策


  • /lib/Cake/Utility/Validation.php を app/Utility/Validation.php へコピーする

  • /app/Utility/Validation.php を以下のように変更する


/app/Utility/Validation.php

protected static $_pattern = array(

//'hostname' => '(?:[_\p{L}0-9][-_\p{L}0-9]*\.)*(?:[\p{L}0-9][-\p{L}0-9]{0,62})\.(?:(?:[a-z]{2}\.)?[a-z]{2,})'
'hostname' => '(?:[_a-z0-9][-_a-z0-9]*\.)*(?:[a-z0-9][-a-z0-9]{0,62})\.(?:(?:[a-z]{2}\.)?[a-z]{2,})'
);


  • /app/Utility/Validation.php の public static function email() 内を以下のように変更する


/app/Utility/Validation.php

//$regex = '/^[\p{L}0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[\p{L}0-9!#$%&\'*+\/=?^_`{|}~-]+)*@' . self::$_pattern['hostname'] . '$/ui';

$regex = '/^[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&\'*+\/=?^_`{|}~-]+)*@' . self::$_pattern['hostname'] . '$/i';


baserCMS 3.0.5 以降の場合

CakePHPのバージョンアップにより、上記対応に加えて以下の対応も必要です。


  • /lib/Cake/Network/Email/CakeEmail.php を /app/Network/Email/CakeEmail.php へコピーする

  • /app/Network/Email/CakeEmail.php を下記のように変更する


/app/Network/Email/CakeEmail.php

//protected $_emailPattern = '/^((?:[\p{L}0-9.!#$%&\'*+\/=?^_`{|}~-]+)*@[\p{L}0-9-.]+)$/ui';

protected $_emailPattern = null;


更に正常に稼働しない場合があります

サーバ上でインストール作業を完了した場合、STEP5画面にcss、img、jsが適用されない状態で表示されることがあります。

【現在判っている点】

/app/webroot/内にテーマフォルダ等が存在する配置では、css、img、jsが読み込まれず、画面が正常に表示できません。

/app/webroot/ 内のファイル群をドキュメントルート直下に移動した配置に変更すると、正常な動作が可能です。

配置変更後は以下の構成になります。


  • /app

  • /files ・・・/app/webroot にあったもの

  • /lib

  • /theme ・・・/app/webroot にあったもの

  • .htaccess ・・・/app/webroot にあったもの

  • index.php ・・・/app/webroot にあったもの

なんでだろ?(´・ω・)


アルファメールプレミアでのインストール留意事項

webroot内のファイル群の配置を、ドキュメントルート直下型に変更してからサーバにアップロードし、インストール作業を行うのが「吉」っぽいですね。


参考情報

http://php.net/manual/ja/reference.pcre.pattern.syntax.php#75339

http://phpexcel.codeplex.com/discussions/238547

http://basercms.net/manuals/3/base/1.html