[concrete5] Ver8.0.3 さくらのレンタルサーバーだとメール通知が送れない問題[解決]

表題の通り、さくらのレンタルサーバーでメール通知が送れない問題が発生して、ログを見てもわからないし、さくらの管理画面にエラーログは出力されないしで、全く原因がわからず1日半くらい費やしてしまってからフォーラムに相談してやっと解決できたのでご紹介します。
フォーラムで教えてくださった方に感謝。

concrete5 JAPAN フォーラム コメント欄のメール通知が送られない

おそらくさくらのレンタルサーバーでのセキュリティで、送信元ドメインが不正だとphp関数からメールが送れない、というのが原因だったのかと思います。

環境は以下

  • さくらレンタルサーバー ビジネス
  • PHP 5.6.30
  • mySQL 5.5
  • concrete5 8.0.3

確認した送れない通知メールは以下

  • コメント欄ブロックの通知
  • メール送信テスト
  • パスワード再発行のメール

なお以下の通知メールは送れていました。

  • ワークフローの通知
  • フォームブロックからの投稿通知

application/config/generated_overrides/concrete.phpに以下を追記して対処しました。

<?php

/**
 * -----------------------------------------------------------------------------
 * Generated 2017-02-27T15:34:58+09:00
 *
 * DO NOT EDIT THIS FILE DIRECTLY
 *
 * @item      cache.full_page_lifetime_value
 * @group     concrete
 * @namespace null
 * -----------------------------------------------------------------------------
 */
return [
    'locale' => 'ja_JP',
    'version_installed' => '8.0.3',
    'version_db_installed' => '20161216000000',
    'misc' => [
        'login_redirect' => 'DESKTOP',
        'access_entity_updated' => 1488174725,
    ],
    'cache' => [
        'blocks' => false,
        'assets' => false,
        'theme_css' => false,
        'overrides' => false,
        'pages' => '0',
        'full_page_lifetime' => 'default',
        'full_page_lifetime_value' => null,
    ],
    'theme' => [
        'compress_preprocessor_output' => false,
        'generate_less_sourcemap' => false,
    ],
    
    
    // さくらレンタルサーバー用メール通知 ここから
    'email' => array(
        'enabled' => true,
        'default' => array(
            'address' => 'concrete5-noreply@' . (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost'),
        )
    ),
    // さくらレンタルサーバー用メール通知 ここまで    
    
];

[concrete5]concrete5.6はphp5.6のサーバだと動かなかった

スクリーンショット 2016-01-04 4.33.46

もともとphp5.3の環境で動いていたconcrete5.6を、php5.6が動いているサーバーに移行したところ、
こんなエラーが出て使えなくなってしまったので、エラー文の部分をコメントアウトしたら直った。

/concrete/libraries/3rdparty/Zend/Cache/Core.php on line 361

 if ($this->_options['automatic_serialization']) {
            // we need to serialize datas before storing them
            $data = serialize($data); 
        } 


 if ($this->_options['automatic_serialization']) {
            // we need to serialize datas before storing them
            // $data = serialize($data); 
        } 

原因は調査中。

あんまりコアファイルをいじりたくないけど、もう5.6をこれ以上アップデートすることもないし、サイトリニューアルの時にはconcrete5.7でやりましょうと提案すれば問題はなさそう。

余談。5.6がゲシュタルト崩壊しそう

[さくらVPS]Basic認証ができなかった→できた。[メモ]

基本認証を掛けてURLへ飛ぶと500 Internal Server errorが出てしまった。
なんでや。と思ってエラーログ見たら、
[code]configuration error: couldn’t check user. No user file?: /dir/[/code]
とか言われて、わけわからん。

なんやかんやいろいろ調べてみた結果、どうやらapacheをインストールした際に、モジュールの読み込みを忘れていたらしいので、httpd.confを見たら
[code]#LoadModule auth_basic_module modules/mod_auth_basic.so[/code]
コメントアウトしてた。

あるぇ〜?一連の設定してた筈なんだけどなぁ〜?

[メモ]Concrete5のマルチアップロードでError: 401

どないなっとんねん!怒るでしかし!!

という冗談はさておき、Concrete5のファイルマネージャーは非常に便利です。
強力なファイルの検索はもちろんの事、複数のファイルをセットにまとめて、スライドショーで利用したり、一度に複数のファイルをアップロードしたり…etc

で。

特定の条件でマルチアップロードが動かなくなります。

こんなふうに。

理由としては下記の様にいくつか考えられますが、どれも該当しなかったので。

  • /filesとそれ以下のすべてのディレクトリの権限が755になってない
  • /filesとそれ以下のすべてのディレクトリの所有者がapache以外になってる
  • ファイルサイズがphp.iniに書かれているサイズよりも大きい

じゃー、なんなのさって話で。

リリース前の段階って事で、普段納品前は、サイトの閲覧権限を「管理者」のみに設定してクライアントに確認してもらってるんだけど、諸事情で基本認証かけたんですよ。

そう!
聡明な皆様ならもう、お気づきですね!「この先は、言わなくてもわかりますよね?」とは言いませんが。

基本認証がどうやら邪魔しているらしく。
つまり、concrete5ではベーシック認証なんかかけなくても、管理画面から簡単に公開非公開選べるんだから、それでやれ、という事だと受け取っておきます。

さくらVPSでconcrete5 その1 VPSレンタル

VPSをレンタルする

さくらインターネットのVPSをレンタルします。
https://vps.sakura.ad.jp/

理由は以下の通りです。
[メリット]

  • VPSなのでサーバのほぼ全ての権限が使える
  • 安い
  • なのに何気に高性能!(ここ重要)

[デメリット]

  • 管理は自分でやらなきゃいかん

さくらのVPSにもいろいろプランがありますが、一日のアクセスが10万を超えるような想定がない限り、1Gプランで十分です。
1Gプランなら月980円で使えます。

手順リスト

  1. はじめに
  2. VPSレンタル
  3. ドメイン取得
  4. DNS設定
  5. サーバー設定
    1. ユーザー作成
    2. SSH接続設定
    3. ファイアーウォール設定
    4. apacheのインストール
    5. ホストの設定
    6. PHPのインストール
    7. MySQLのインストール
    8. phpMyAdminのインストール
  6. メールサーバー構築
  7. Concrete5のインストール
  8. Concrete5の組み込み
    1. そもそもConcrete5ってなんだ
    2. Concrete5の中身
    3. テーマファイルの作成
    4. ブロック
    5. カスタムテンプレート
    6. アドオン
    7. Designer Contentとは
    8. ページタイプ
    9. ユーザー
    10. 権限
    11. キャッシュ設定
  9. おしまい

さくらVPSでconcrete5 その0 はじめに

クライアントワークで、企画〜デザイン〜コーディング〜さくらのVPSを使ってConcrete5のインストールと組み込み、メールサーバーの設定まで一通りやりました。

多分プログラム畑の人なら、簡単に出来てしまうんじゃないかと思うのですが、私はずっとデザイン畑で仕事してきたので、色々な作業が思い通りにいかず試行錯誤を繰り返してなんとか完成までこぎ着ける事ができました。

なおさくらVPSは契約した時点でのバージョンはcentOS6.3でした。
バージョンは以下のコマンドで確認できます。

[code]
[user@servername ~]$ cat /etc/`ls /etc -F | grep &quot;release$\|version$&quot;`
CentOS release 6.3 (Final)
[/code]

ちょっとやった作業が多いので、一度にまとめて公開するのではなく、下記の手順にしたがってこれから数日かけて記事をあげていきたいと思います。

手順リスト

  1. はじめに
  2. VPSレンタル
  3. ドメイン取得
  4. DNS設定
  5. サーバー設定
    1. ユーザー作成
    2. SSH接続設定
    3. ファイアーウォール設定
    4. apacheのインストール
    5. ホストの設定
    6. PHPのインストール
    7. MySQLのインストール
    8. phpMyAdminのインストール
  6. メールサーバー構築
  7. Concrete5のインストール
  8. Concrete5の組み込み
    1. そもそもConcrete5ってなんだ
    2. Concrete5の中身
    3. テーマファイルの作成
    4. ブロック
    5. カスタムテンプレート
    6. アドオン
    7. Designer Contentとは
    8. ページタイプ
    9. ユーザー
    10. 権限
    11. キャッシュ設定
  9. おしまい

これ全部書き終わった頃には、多分一冊本が書けるよね(笑)
きっと優秀な人がconcrete5の本出してくれるんだろうなー(遠い目)

ターミナルでディレクトリの削除

EC-CUBEのインストールディレクトリを間違えたので、filezillaで一旦htmlディレクトリを全部削除しようと思ったらなぜかできなかった。

ターミナルで以下のコマンド書いたら「ディレクトリです」って。

$ rm html
rm: cannot remove `html': ディレクトリです

どうやら書き込み保護されているとディレクトリの削除ができないらしい。
こういう場合は、「-r」オプションをつけるといいらしくて。

$ rm -r html
rm: 書き込み保護されたファイル `html/xxxxx.html' を削除しますか(yes/no)? no
rm: ディレクトリ ``html'' を削除できません: ディレクトリは空ではありません

それでも削除できない場合は、「-f」オプションで強制的に削除できました。

$ rm -rf html

やったね!