wordpressのサーバー移行でtouch関数がないというエラー対応

クライアントのサーバー保守をしてるとPHP7.3までのサーバー以外と多いんですよね。
現時点で、wordpressのPHP対応バージョンはPHP7.4からが奨励になっており、PHP7.3で使えなくなるプラグインが出てくる
のがわかったのでPHP8に移行しました。

PHP8にするとコードのエラーが増える

PHP8にすると今まで動いてたコードでエラーが表示されるようになり書き換える必要が出てきます。

ま、これはエラー内容で調べてコードを書き換えて対応できたんですよ。

touchがサーバーで使えないという絶望

で、辛かったのが、

CRITICAL Uncaught Error: Call to undefined function touch()

と表示されて、プラグインが動かなかった時。

phpinfo()で調べたらtouchがdisable_functionsになってました。

touch()使えないとプラグインがエラーで動かないやんってことで、サーバー会社に問い合わせ。

すると、セキュリティ対策のため、touchは使えるようにできないという回答。

エラー直すためにどうしたらいいのか絶望したよね

touchがサーバーで使えないときにした対応

「touchの代わりになる関数教えて」とAIのbardに聞いて、functions.phpに下記のコードを入れて対応しました。

if (!function_exists('touch')) { function touch($file) { $handle = fopen($file, 'w'); fwrite($handle, ''); fclose($handle); }
}

終わりに

wordpressをPHP7からPHP8に対応するのは時間がかかるので早めに対応した方がいいですぜ。
PHP8が使えないサーバーは引っ越す必要があるのでなおさら。

引っ越さないとハッキングされて、なるはや対応させられる地獄で、泣きをみる未来がうっすら見えますね〜。