joomla! をxammpにインストールしようとしたらフリーズ、その対処方法
joomla!をUSBメモリに展開したXAMPPにインストールしようとしたら、途中でフリーズしてしまいました。
最初はインストール処理に時間がかかってるのだなと思い、そのまま放置して外出。2時間ほどして戻ってきましたが、画面はそのままでした。インストール途中でフリーズしていることは間違いない・・・
joomla! のバージョンとXAMPPのバージョンの相性が悪いのかなと思って、XAMPPのバージョンを変えてやってみましたが、状況は同じでした。
PhpMyAdmin で、データベースの中身をみてみると、19個のデータベーステーブルが作成された時点で停まってることが判明。
php.iniを開いてエラー出力設定を調べる
原因がわかれば解決もはやくできると思い、php.ini をエディタで開いてエラー出力する・しないの設定はどうなっているのかと調べました。
display_errors = On
エラー出力をするという設定になっています。
フリーズしているのにエラーが出ていないのはなぜ?と調べてみると、phpではプログラム側でエラー出力しないようにできるらしいです。
joomla! のインストールプログラムでも、エラー出力しないに設定されているのでしょう。
スクリプトの実行時間を制御する、max_execution_time
さらに調べていくと、php.iniのなかにphpスクリプトの実行時間を制御する、max_execution_time という設定項目があることが分かりました。
再度、php.ini をエディタで開いて、max_execution_time の項目を探すと、
max_execution_time = 30
となっていました。「phpスクリプトの最高実行時間は30秒です」という意味です。
インストールがこの設定値、30秒以内に終わらなかったために、停止していたんですね。
この設定時間を変えて試してみました。
php.ini を書き換えて上書き保存したら、必ずXAMPPを再起動してください。そうしないと、書き換えた内容が反映されません。
max_execution_time = 30
↓
max_execution_time = 180
43個のテーブル作成でストップ
max_execution_time = 300
58個のテーブル作成でストップ
max_execution_time = 480
66個のテーブル作成でストップ
max_execution_time = 600
68個のテーブル作成でインストール成功
私の環境では、600秒(10分)に設定してようやくインストールできました。
もしもエラー出力されたなら、
Fatal error: Maximum execution time of 30 seconds exceeded
(致命的なエラー:最高実行時間である30秒を超過しました)
というエラーが表示されていたでしょう。
インストール時にフリーズしてしまうようなことがあったら、php.iniのmax_execution_time の値を書き換えて実行してみてください。
USBメモリは、ハードディスクやSSDと比べると転送速度が劣るので、ファイル作成、読み込み・書き込みに時間がかかりこのようなことになったものと思います。