search
LoginSignup
4
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

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

サーバ上でインストールする際、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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4
Help us understand the problem. What are the problem?