2011-01-28 116 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脚本发送头文件。会话不是真的需要在终端,是吗?