【ECCUBE/XSERVER】サーバー移管ができない!解決までに試したこと全て

 

業務でサーバー移管をする事になりまして、ECCUBE2の移管後にエラーで焦ったので、皆様のお役にたてると嬉しいです(*´∀`*)

 環境

 移管元

  • ドメイン:ムームードメイン
  • サーバー:XSERVER
  • PHP:(見るのを忘れました)
  • MySQL:5.0

移管先

  • ドメイン:XSERVER
  • サーバー:XSERVER
  • PHP:5.3.13
  • MySQL:5.7

移管するもの

  • ECCUBE2
SSLやネームサーバーの反映もできているのを確認
 

 

 エラー内容

 

以下2種類のエラーと奮闘しました( ..)φ

・リロードしても真っ白

・無効なURLです。 プログラム設定の反映待ちである可能性があります。 しばらく時間をおいて再度アクセスをお試しください。

 今回の結論

今回はECCUBE2と古かったため、動作要件や皆さんのありがたい情報をググって変更

・PHPバージョン変更 7.3.14→5.3.3(移管前不明)

・移管前に準備しておいた、tarファイル(圧縮アーカイブ)を新サーバーに持ってくることでパーミッションを保持

・ECCUBE2とMySQLエラーでファイル変更 [Native message: Unknown system variable ‘storage_engine’]

【変更】$objQuery->exec(‘SET SESSION storage_engine = InnoDB’);
  ↓
$objQuery->exec(‘SET SESSION default_storage_engine = InnoDB’);
 
・DNSキャッシュ削除

 解決に至るまでにした事

 
・PHP、MySQLバージョン変更(エラーを見つつ徐々に下げていった)
 
・wifiを切ってそのサイトを見たことのないブラウザで確認
 
・.htaccessのファイル名を一部変更して、.htaccessだと認識させないようにし、.htaccessをない状態にする
 
・アクセスしたら一番最初に来るファイルであろう、index.phpのファイル名を一部変更して、index.phpだと認識させないようにし、index.phpをない状態にする
 
・ググってパーミッションが問題だと知り、保存してあったtarファイルごとアップロードSSHで入り、解凍する
 
MEMO
ECCUBE等の大きなシステムは見に行っただけでもlogに書き込みがされたりする。
パーミッションがない為、書き込みが出来ないので見れていないのではないか?
 
・ECCUBEのdata/logs/error.logを確認
warnimgはあっても動くので一旦無視で、PHPのエラーが初めに出てきて、指定されているMDB2.phpにはPHPの情報が記載されていた(PHPのバージョンをもう一個下げた)
 
[/index.php] Fatal error(E_PARSE): syntax error, unexpected ‘new’ (T_NEW) on [/home/hattoriweb/ec-leaf.com/data/module/MDB2.php(393)] from 126.33.157.231
customer_id =
→MDB2.php(393行目)

 

・ECCUBEのdata/logs/error.logを確認 次はMySQLのエラーが出てきた

2020/01/29 21:13:33 [/index.php] Fatal error(E_USER_ERROR): DB処理でエラーが発生しました。
SQL: [SET SESSION storage_engine = InnoDB]
MDB2 Error: unknown error
_doQuery: [Error message: Could not execute statement]
[Last executed query: PREPARE mdb2_statement_mysql_1aa982d631a96686d82b95e564246d44eca75d91d FROM ‘SET SESSION storage_engine = InnoDB’]
[Native code: 1193]
[Native message: Unknown system variable ‘storage_engine’]
on [/home/hattoriweb/ec-leaf.com/data/class/SC_Query.php(1008)] from 126.33.157.231
customer_id =
 
 
文中の[Native message: Unknown system variable ‘storage_engine’]で検索したらヒット(‘◇’)ゞ
これで/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.phpの363行目を変更
 
【変更】$objQuery->exec(‘SET SESSION storage_engine = InnoDB’);
  ↓
$objQuery->exec(‘SET SESSION default_storage_engine = InnoDB’);
MySQL 5.5 よりも前では、MyISAM がデフォルトのストレージエンジンでした。我々の経験上、ほとんどのユーザーはデフォルト設定を変更しませんでした。MySQL 5.5 以上では、InnoDB がデフォルトのストレージエンジンです。
 
 
・キャッシュの残っていないスマホでは確認ができたが、パソコンでは色んなブラウザで確認しまくっていたため、まだ無効なURLです状態。
下記順でキャッシュ削除ができているか確認

 

  • スパーリロード
  • ブラウザの履歴キャッシュクリア
  • 他のブラウザでもスパーリロード、ブラウザの履歴・キャッシュクリア
  • コマンドプロンプトでDNSキャッシュ削除
 
下記コマンドをたたく
ipconfig /flushdns

 

「DNS リゾルバー キャッシュは正常にフラッシュされました。」が出たらOK
 
 
無事表示できました!
そんな感じで4時間もかかり解決。。(´;ω;`)ウゥゥ
 

コメントを残す

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