(Open)LiteSpeedでphp.iniに記述した一部の設定が反映されない
発生した環境:UbuntuServer22.04.1 LTS + OpenLiteSpeed 1.7.16 + LiteSpeedPHP8.0または8.1(直感が正しければそれ以前でも発生すると思われる)
表題の件、具体的にはmax_execution_timeがデフォルトでは30〜60秒になっていると思うのだが、これを「-1」とか「86400」とかに書き換えてLiteSpeedをリロードしても反映されない。
このため、確実に30〜60秒を超える処理について、phpプログラムが時間内に処理を終えることができなかった場合、タイムアウトにより処理が中途終了してしまい意図した通りの動作にならない。
リファレンスではphp.iniを書き換えるか.htaccessで指定するか見たいなことを書いてあるのだが、実際にやってみても有効化しても反映されない。
また、WebAdminでタイムアウト制限を変更しても期待した通りの動作をしない。
結論から言うと、WebAdmin -> バーチャルホスト -> 設定したいドメイン -> Rewrite と進み、ReWriteルールをオンにし、Rewriteルールに以下のように記述すると意図した通りの動作をするようになった。
<IfModule Litespeed>
SetEnv noabort 1
SetEnv noconntimeout 1
RewriteEngine On
RewriteRule (YourPHP-Program) - [E=noabort:1, E=noconntimeout:1]
</IfModule>
上掲は一例であり、(YourPHP-Program)の部分は適宜置き換えられたい。
スクリーンショットの例では無差別に全ファイルに対して実行時間無制限を適用するように書いてあるが、実際には有限に設定した方が良いだろう。
他のphp.iniに存在する設定については概ねphp.iniの通りに動作するのに、何故かphp_execution_timeの項目だけ反映されず、ローカルテスト環境であるMAMPのphp.iniの設定を見直したり、色々と時間を取られてしまった。
何かと忘れっぽい自分のためと、もしLiteSpeedをお使いの方で同様の問題にぶち当たった方がおられたら、と思い、備忘録として残しておく。