Magentoバージョン1.9.1.x以降で注文メールが届かない時の対処法

MagentoのCronジョブ設定方法

ショッピングサイトを構築するのに欠かせないECコマース専用のCMS『Magento』ですが、非常に高機能で柔軟な対応ができるのですが、設定が結構複雑だったりします。

最近、このMagantoでサイトを構築している時に、注文メールが届かないことに気付き、いろいろ調べた結果、Magantoバージョン1.9.1.x以降からCronジョブ設定をしないとメールは送信されない仕様になったとの事でした。

今回は、Magento1.9.1.x以降で注文メールが届かない時のCronジョブの設定方法を解説します。

MagentoのCronジョブ設定は公式ページが正解!

ネットで調べると色々な方法が混在していて、上位に表示されているものでも、情報が古かったりして結局は間違っていたりと、どれが本当の情報なのか分らず、大ハマりして結局解決するまでに1日半ほど費やしてしまいました。

サーバーのCronジョブは、あまり慣れていないと何それ?って感じで、設定方法がイマイチわからなかったりします。

結局、Magentoの公式ページで紹介されていたCronジョブ設定が正解でした!

* * * * * /bin/sh /[your Magento install dir]/cron.sh

http://devdocs.magento.com/guides/m1x/install/installing_install.html#install-cron

サーバーのcPanelからのCronジョブ設定方法

今回は、サーバー管理ソフトのcPanelからのMagentoのCronジョブの設定方法を解説したいと思います。ネットで調べると、crontabという言葉が頻繁に出てきますが、cPanelからの設定では、crontabは全く必要ありません。

cPanelにログインする

サーバーの管理画面にログインして、Cronジョブをクリックする

cPanelのCronジョブ

新しいCronジョブの追加

新しい cron ジョブの追加

共通設定

共通設定のプルダウンの一番上にある「1分間に1回(* * * * *)」を選択します。

コマンド

コマンド部分に以下を入力します。

/bin/sh /[your Magento install dir]/cron.sh

[your Magento install dir]の部分が少し分りにくいですが、パスを入力します。
例えば、/bin/sh /home/username/public_html/cron.shの様になります。サーバーによってパスは変わりますので適宜変更してください。

最後に、「新しいcronジョブの追加 」ボタンをクリックして、設定は完了です。

それでも動かない場合は、cron.phpを修正する

私の場合、サーバー側でCronジョブを設定しましたが、結局Cronジョブは動かず、行きついたのがcron.phpに記述を追加する方法です。

ファイルの場所は、magentoディレクトリの直下にあります。

cron.phpファイル内の49行目付近

$isShellDisabled = (stripos(PHP_OS, ‘win’) === false) ? $isShellDisabled : true;

の後に

$isShellDisabled = true;

を追加してアップロードする。

参考にしたサイト:http://magento.stackexchange.com/questions/10894/magento-cron-php-does-nothing-after-it-runs