2011-01-28 209 views
0

我在我的web服務器上創建了一個cron作業。該cron每隔幾個小時運行一次php文件。這是緩存創建技術。但有一個問題 - 我的cron命令如下所示:php -q /folder/phpfile.php。當我直接從瀏覽器運行「phpfile.php」時,一切正常,但當CRON運行該文件時,它總是輸出「頭文件已發送」錯誤到「error_log」!提到的PHP文件DO開頭爲if(!isset($_SESSION)) session_start();,但「error_log」顯示確切地說「session_start()」行正在拋出警告!與php命令行問題

怎麼了?爲什麼當我用瀏覽器運行這個文件時一切正常,但是當cron執行它時,會生成「頭文件已發送」?

+0

如果您自己從命令行而不是從瀏覽器執行PHP命令,會發生什麼? – 2011-01-28 18:37:12

+3

如果通過CRON運行,將不會有會話可用 - 會話Cookie將在何處? – 2011-01-28 18:38:48

回答

0

它在瀏覽器中工作的原因可能是您的web服務器和cli-php有不同的php.ini設置。

output_buffering指令在您的網絡服務器上顯示爲ON,並在cli-php中關閉,這是正確的。因爲沒有人想在腳本結束工作之前等待內容。我們希望看到腳本運行時發生了什麼。

錯誤的是你用cli腳本發送頭文件。會話不是真的需要在終端,是嗎?