2011-01-31 8 views
0

私はコンソール( "php -q"コマンド)からcronによって呼び出されるいくつかのPHPファイル "A"を持っています。そのPHPファイルには、PHPファイル "B"が必要です。ファイル "B"はプロジェクトの多くの場所で使用され、if(!isset($_SESSION)) session_start();で始まります。これはブラウザからうまく動作しますが、cronで使用するとファイル "A"はファイル "B"を必要とし、ファイル "B"はセッションを開始しようとします。 "セッションヘッダー送信"通知。私はファイルob_start()をファイル "A"に入れようとしましたが、後でrequire_once("B")(もちろん、ob_clean())の直前ですが、エラーは持続します!ob_start()はインクルードファイルと必須ファイルに影響を与えることができますか?

私は間違っていますか?どのようにして(ファイル "A"から)私はファイル "B"がコンソールに何かを送信しようとするのを防ぐことができますか?

+2

セッションをコマンドラインで使用することはできません。クッキーを送信するブラウザがなく、1つのリクエストだけを送信するブラウザがないため、意味がありません。 –

+0

なぜあなたは何かが送られたと思いますか? *コンソールに何かを送ることに何が間違っていますか? –

+0

@ダン - 私は知っている、それはこのポストのポイントです:) @Col。ファイル "B"がセッションを開こうとすると "error_log"にエラーが書き込まれるため、 – guest86

答えて

2

CLI PHPスクリプトでsession.use_cookiesを無効にするには、ini_set()またはphp.iniの設定を使用します。この方法ではsession_start()はクッキーを送信しようとしません。セッションに関するキャッシュ設定を確認し、session_start()もキャッシュに関するHTTPヘッダーを送信する必要があります。

ini_set('session.use_cookies', 0); // disable using cookies for session ID (cookies = headers) 
session_cache_limiter(false);  // disable sending cache headers 
// ... 
session_start(); 
+0

助言をいただきありがとうございますが、PHPから "use_cookies"を無効にできますか?ファイル "A"が呼び出されたときのみ? \ – guest86

+0

@ guest86:はい、私が言ったように: "... via ini_set()かvia ..."。私のサイトのサーバーでphp.iniにアクセスすることはできません。 – Progman

+0

ニース!ですから、 "require_once"の前に "ini_set" use_cookiesをオフにしてから、それを元に戻すべきですか?またはサーバーは後でデフォルトに戻しますか? – guest86

0

$ _SESSIONは主にCLIで任意の出力の前に呼び出される

+0

私は知っています!私はブラウザの使用のために作成された標準のPHPファイル(B)を使用するのではなく、何らかの理由で(ファイルA経由で)セッションを開こうとするのを防ぎます!だから私は "require_once(B)"の前に "ob_start"を置き、 "require_once"の後に "ob_clean"と呼んだのです。 – guest86

+0

あなたがこれを行うことができるとわかったら:ファイルの一般的な変数を宣言してください:$ sessionCheck = 1; ファイルBの中でif(!isset($ _ SESSION、$ sessionCheck)) – dynamic

0

のob_start()を持って働くことができないので、クッキーに基づいています。だから、ファイル "A"の先頭にあるかもしれない。

また、$ _SESSIONはスーパーグローバルであり、常に設定されているので、if(!isset($ _ SESSION))は何もしません(真実ではない)。

+0

ファイル "A"の上にあります! – guest86

+0

'$ _SESSION'は、セッションがロード/開始された場合にのみ存在します。必ずしもそうではありません。 – Progman

0

$ _SESSION = trueを実行できます。ファイル "A"でvarを設定し、セッションを開始しません。汚いですが、機能します。

+0

この音は簡単です!誰かがこのアプローチに間違ったことを見ていますか? – guest86

関連する問題