EC-CUBE 2.13で500エラー、インストール画面が真っ白
先日、さくらのレンタルサーバー(スタンダードプラン)に旧バージョンのEC-CUBE(2.13.5)をインストールしようとしたところ、手こずったので、その対処法をメモしておきます。
パーミッション設定のミスで起きる500エラー
EC-CUBEをインストールする際、500エラーが出る主な原因は「パーミッションの間違い」。
さくらのコントロールパネルより、左サイドバーメニューの[アクセスログの設定]-[エラーログの表示]と進むと、エラーの詳細を見ることができます。
エラー内容
suexec policy violation: see suexec log for more details Premature end of script headers: index.php
最初は『index.php』だけのパーミッションを変更してみたが、500エラーは消えず。
そこで、index.phpが絡むディレクトリごと(install/index.phpとhtml/index.php)パーミッションを755に変更することで、インストール画面が表示されるようになった。
ところが、インストールは無事に完了したものの、管理画面で他のページに移動しようとすると、500エラーが表示されてしまう。
結局、全てのディレクトリとPHPファイルのパーミッションを『755』に変更したことで、正常にEC-CUBEが動くようになった。
今回、SSHでインストールを行ったが、その後、パーミッションを再設定し直す必要があった。
すべてのディレクトリ → 755
すべてのPHPファイル → 755
FTTTPで一つずつ設定していくのは大変なので、SSHで一括変換しました。
SSH(Poderosa) について – さくらのサポート情報
UNIXコマンド
拡張子が「.php」のファイルだけ、パーミッションを『755』に変更
find /home/〇〇〇/www/ -name \*.php -exec chmod 755 {} \;
ディレクトリすべてのパーミッションを『755』に変更
find /home/〇〇〇/www -type d -exec chmod 755 {} +
EC-CUBEインストール画面が真っ白の場合
http://xxx.com/installにアクセスすると、本来、EC-CUBEのインストール画面が表示されるはずですが、「画面が真っ白で何も表示されない」という場合、『define.php』の設定で『dataディレクトリの相対パスが間違えてる』可能性があります。
【define.php】 /** HTMLディレクトリからのDATAディレクトリの相対パス */ define('HTML2DATA_DIR', '../data/');
まずは、エラー内容を表示させる設定を行います。
さくらのコントロールパネルより、左サイドバーメニューの[PHP設定の編集]に進みます。
php.ini設定ファイル編集に以下のコードを書き込みます。
display_errors = On
設定を保存して、再度、『http://xxx.com/install』にアクセスすると、エラー内容が表示されるはずです。
以下のようなエラーなら、原因は『dataディレクトリの相対パスの間違い』でしょう。
Warning: require_once(/home/〇〇〇/www/./data/require_base.php) [function.require-once]: failed to open stream: No such file or directory in /home/〇〇〇/www/install/index.php on line 35 Fatal error: require_once() [function.require]: Failed opening required '/home/〇〇〇/www/./data/require_base.php' (include_path=':.:/usr/local/php/5.2/lib/php') in /home/〇〇〇/www/install/index.php on line 35
この相対パスは各々の構成によって違います。
僕の場合は、以下のようにwwwディレクトリにhtmlディレクトリの中身を移している為、『../data/』としていますが、『./data/』や『data/』の人もいます。
〇〇〇 – www
– data
PHPのバージョンが原因の場合もある
EC-CUBEとPHPのバージョンの相性が悪いこともあるようで…
さくらのレンタルサーバーなら、意図的にPHPのバージョンを下げることができます。
さくらのコントロールパネルより、左サイドバーメニューの[PHPのバージョン選択]で設定できます。
僕は、「PHP 5.2」に設定しています。