同様の問題が発生しました(CMS Made Simpleセッションのデータを別のphpファイルで使用したかったのですが)。私にとっての原因は次のとおりです(質問に対する私のコメントで述べられているように):
CMS Made Simple(今後のCMS)は、独自のセッション名を作成します。これは、別のphpファイルでsession_start()を実行すると、同じセッション名を持たないことを意味します。したがって、php-fileはCMSのセッションデータにアクセスできず、CMSはphp-fileのセッションデータにアクセスできません。
解決策は論理的に原因から導き出されます。同じセッション名を使用するには、両方が必要です。CMSはinclude.php
、アプリのルートフォルダーにあるセッション名を設定します。
$dirname = dirname(__FILE__);
...
$session_key = substr(md5($dirname), 0, 8);
#Setup session with different id and start it
@session_name('CMSSESSID' . $session_key);
したがって、phpファイルでは、(を呼び出す前にsession_start();
)次のことを行う必要があります。
//Substitute the string $dirname for the result of __FILE__ in **include.php**!!!
$dirname = '/data/web/somefolder/someotherfolder/'
$session_key = substr(md5($dirname), 0, 8);
@session_name('CMSSESSID' . $session_key);
//Now you can call session_start();
これを行うと、phpファイルがCMSのセッションにアクセスできるようになります。重要なデータをセッションに配置するプラグインを使用する場合は、そのデータを消去しないように注意する必要があります。
注:私はCMSバージョン1.8.2を使用していますが、別のバージョンを使用すると、このソリューションが機能しない場合があります。