業務でサーバー移管をする事になりまして、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時間もかかり解決。。(´;ω;`)ウゥゥ