0

開発サーバーと運用サーバーに次の同一のコードがあります。開発側では機能しますが、本番側では機能しません:

<?php
$s = session_start();
mail('me@example.com', 'Site-test', "s=$s; SESSION=".serialize($_SESSION), "MIME...");

開発サーバーは次を示します。

s=1; SESSION=a:4:{s:20:"user_timezone_region";s:13:"Pacific/Samoa";s:4:"lang";s:1:"1";s:12:"sess_user_id";s:3:"225";s:14:"sess_user_type";s:1:"S";} 

本番サーバーは次を示します。

s=1; SESSION=a:0:{} 

本番サーバーの PHP 設定に問題があり、診断したいと考えています。はい、これは最近の私の他の 2 つの質問herehereにリンクされています。

詳細:

  • このサーバーでcPanelを実行しています
  • PHP error_log は、上記をエラーとして報告しませんでした (変数 's' が '1' であることに注意してください)。
  • 2 つの phpinfo() の違いは、最初のリンクに記載されています。
4

2 に答える 2

1

新しいクライアントに対して最初に開始されたとき、セッションは実際には空です。これは、開発サーバーでは戻ってきたクライアントのセッションが表示され、本番環境では初回クライアントのセッションが表示されることを意味する可能性があります。

于 2010-09-18T11:09:44.703 に答える
0

なぜこのような奇妙な方法でセッションをテストするのですか? なぜこんな単純なスクリプトを作らないのか

<? 
session_start(); 
if (!isset($_SESSION['counter'])) $_SESSION['counter']=0;
echo "Page reloaded ".$_SESSION['counter']++." times.<br>
<a href=".$_SERVER['PHP_SELF'].'?'.session_name().'='.session_id().">reload</a>"; 
?>

それが機能する場合、セッションは完全に機能しますが、識別子の受け渡しに問題があります。
そうでない場合...エラーメッセージが表示されるはずです。

于 2010-09-18T11:33:30.660 に答える