勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

WordPressと別プログラム間でSESSIONが引き継げない場合の対応方法

   2024/02/20  WordPress CMS

同一サーバ内に自作したプログラムとWordPressを設置しており両者でセッションを引き継ぎたかった。ただ、WordPressのテーマフォルダ内functions.phpへsession_start()を追記する形でも引き継げなかった。以下に対処方法のメモ。

 

.user.iniファイルが設置されていた

先に原因と対処法を書く。WordPressのディレクトリ直下に.user.iniというファイルが設置されており、ファイル内にsession.save_pathの記述があり、セッションの保存先が定められていた。

自作プログラム内とのセッションの保存先が異なっていた為、引き継げなかったものと思われる。

.user.iniを削除するかsession.save_pathの記述を変更、もしくはコメントアウトで解決する。今回は.user.iniを削除した。

 

対応方法

通常であればWordPressテーマフォルダ内のfunctions.phpに以下を追記すればセッションの引継ぎを行える。

function init_session_start(){
    session_name('hogehoge'); //必要に応じて記述
    session_start();
}
add_action('init', 'init_session_start', 1);

 

なぜ.user.iniファイルが設置されたのか

今回の現象が発生したサーバはエックスサーバーだった。比較的よく使用するサーバで、また、同じような構成(自作プログラムとWPの併用)で開発したことも何度かあったが今回の現象は初めてだった。

違う点として今まではWPを手動で設置していた。データベースを作成しWPファイルをFTPでアップロードするという形をとっていた。

しかしながら今回はエックスサーバの契約時点でWPを自動インストールしたものをクライアントからいただいていた為、恐らくは自動インストールした場合.user.iniが入ってくるんじゃないかと思われる。

 

所感

セッションが引き継げない場合に保存先を疑うという考えを持っていなかったので解決するまで非常に時間がかかった。今後は保存先にも注意する。

 - WordPress CMS

  関連記事

WordPressを4.8.2にして不具合

WordPressを4.8.2にすると記事の新規追加時にウィジウィグの挙動がおか ...

WordPressにてPHPのAPCuを使用して高速化を図る方法

先日本サイトのサーバにAPCuを導入した。しかしながら所感にも書いたとおりAPC ...

WordPressで翌日以降に編集した記事のみ最終更新日を表示する方法

WordPressで翌日以降に編集した記事のみ最終更新日を表示させたい。逆に言う ...

WordPressでオリジナルのプラグインを作成する方法

WordPressでオリジナルのプラグインを作成する方法を以下にメモ。 &nbs ...

Polylangのスイッチャーとページャーの組み合わせ方法

WordPressで多言語サイトを作成するにあたりPolylangというプラグイ ...