エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


ECCUBEの新規追加ページがInternal Server Error・Not Foundに

      2017/03/12

ECCUBEの新規追加ページがInternal Server Errorに

 

ECCUBEのページがInternal Server Errorはパーミッションが原因

 
ECCUBEには、オリジナルのページを追加する機能が用意されてします。
 
「デザイン」-「PC」-「ページ詳細設定」で遷移する画面から新しいページを追加することができます。
 
ECCUBEで新規追加したページがInternal Server Errorに!原因はファイルのパーミッションの場合が多くその対処方法とプログラムの修正ポイントを解説。Not Foundも解説。
 
 
ここから追加した新しいページにアクセスしてみたところ、「『Internal Server Error』が出て動かない!」ということがありました。
 
原因を調べて見るとファイルのパーミッション(ファイルの属性)が適切でないことが原因でした。
 
 


 

Internal Server Errorにはパーミッションを変更

 
下記の中に生成される PHPファイルのパーミッションを確認しましょう。
 {ECCUBEのルート}/user_data/******.php
 
PHPのファイルのパーミッションが「644」であれば「666」に、「666」であれば「644」などに変更して見ましょう。「604」「606」などの可能性もあります。
 
ここの設定はサーバによって正しい設定が違いますので、一概に「“666”にしましょう!」と言えないのが心苦しいところですが、正しく表示されているページのパーミッションにあわせるとエラーが解消されて正しく表示されることでしょう。
 
 
私が遭遇した場合の「Internal Server Error」は、上記のとおり管理画面からのファイルの作成の際に発生したものでしたが、FTPでファイルをアップロードした場合も「Internal Server Error」が出る場合は、ファイルのパーミッションを変更して見ましょう。
 
 

パーミッションを変更する処理を追加

 
前項の通りパーミッションを変更することで正しく表示されるようになった場合は、今後作成されるファイルのパーミッションが正しいものになるようにプログラムの修正も行っておく方がいいでしょう。
 
対応するファイルは下記になります。
 {ECCUBEのルート}/data/class/helper/SC_Helper_FileManager.php
  ※「data」フォルダはドキュメントルートより上位にある場合もあります。
 
322行目辺りからのソースコードです。
14行目~16行目が追加された部分です。
 

 
作成するファイルの拡張子が「php」の場合は、ファイルのパーミッションを「644」に設定します。
という処理を追加しています。
 
これで今後新しく作成されるページも「Internal Server Error」にならずに生成されるようになります。
 
ファイルに設定するパーミッションは、サーバに合わせて変更してください。
 
 
  ※ECCUBE 2.13.3、2.13.4で検証をしています。
 
 

ECCUBEの新規追加ページが Not Foundに

 
新規作成したページが「Internal Server Error」になる場合はファイルが作成されるものの、ファイルのパーミッションが違う場合に起こる現象でした。
 
ですが、新規作成したページが「Not Found」のエラーになる場合もあります。
これは、ファイルが生成されるフォルダのパーミッションが正しくなく、ファイルが生成されない場合に起こる不具合の一つです。
 
 

新規追加ページが Not Foundの場合はフォルダのパーミッション

 
管理画面からページを新規追加した場合は、下記のフォルダにファイルが生成されます。
 
 {ECCUBEのルート}/user_data/
 
 {ECCUBEのルート}/data/Smarty/templates/{テーマ}/user_data/
  ※「data」フォルダはドキュメントルートより上位にある場合もあります。
 
これらのフォルダに書き込み権限が付与されていない場合は、ファイルを生成することができないため、「Not Found」の原因になります。
 
上記のフォルダのパーミッションを「777」「755」などに変えてみて、ファイルが生成され、エラーが解消されるかを確認してみてください。

 - PHP・Smarty・ECCUBE

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

PHPで1ヵ月前、先月、今月1日、来月末の日付などの算出はDateTimeImmutableを使う
PHPで1ヵ月前、先月、今月1日、来月末の日付などの算出はDateTimeImmutableを使う

PHPには日時をオブジェクトとして生成する関数「DateTimeImmutable」「DateTime」が用意されている。これを利用して1ヶ月後、月初日、月末日、5日後などを指定して日付を取得できる。

PHPパーミッション変更のchmod関数・モードを変数で指定する方法

パーミッション変更関数であるchmod関数の第二引数、ファイルモードの指定に変数を使う場合は8進数に変換するoctdec関数を使って変換します。

ECCUBE2.13.3で商品規格の在庫数が無制限から変更できないバグがある

2.13.3固有のバグである商品規格の在庫数の入力エリアがアクティブにならない不具合を解消する解説です。product_class.tplの2行を修正するだけの簡単対応です。

数値がMySQLのint(11)に保存できない!PHPの変数が本当にint型か確認!
数値がMySQLのint(11)に保存できない!PHPの変数が本当にint型か確認!

PHPでintegerとdoubleが混在するような計算をする場合は要注意!計算結果が整数値であっても途中で使用する変数にdoubleの値が入っているときは計算結果がintegerではない場合があります。

ECCUBEでアップロードできない。upload_max_filesizeを設定する場所

テンプレートをアップロードする際に発生するエラー「テンプレートファイルがアップロードされていません」の対処方法。これはファイル容量の制限に引っかかっています。

CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順の解説
CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順の解説

CentOS6系、7系のPHPバージョンを5.3から5.6、7.0、7.1にアップする作業手順と解説。yum updateコマンドを使い作業時間は約10分。コマンドの解説や引数の意味なども解説しているので役に立つはず。

ECCUBEの管理画面のSSL設定をインストール後に変更する方法

ECCUBEをインストールした後から管理画面のSSL設定を変更する方法を解説します。config.phpファイルのHTTPS_URLとADMIN_FORCE_SSLの値を変更すればOK。

include、requireのパス指定をdirname(__FILE__)、__DIR__と書く理由

include、requireのパスの指定を dirname(__FILE__)、__DIR__で記述する理由に付いて解説。相対パス、絶対パスを直書き、パスを書かない場合は何が問題かを説明。

JSON形式の値を配列形式に変換・PHPでは json_decode()、json_encode()
JSON形式の値を配列形式に変換・PHPでは json_decode()、json_encode()

JSONとは「JavaScript Object Notation」の略でテキストベースのデータフォーマット。JSONの値をPHPで配列に変換するWebツールの紹介とその処理「json_encode()」「json_decode()」関数の解説。

パーミッション(属性)一括変更ツール・WordPress最適化済

WordPressのパーミッション(属性)を一括変更するツールを作成!ファイル、フォルダのパーミッションが一覧表示でき、ファイルを選んでパーミッションの変更が行えます。