已在cron作业解决方案中发送的标头不起作用


Headers already sent in cron job solutions not working

我知道这个问题在这里和互联网上被问了很多次,但我找到的解决方案都不起作用,这已经让我疯了好几个月了。

我有一个非常简单的PHP页面:

<?php session_start(); ?>

我在error_log中得到了噩梦般的错误headers already sentcache limiter。虽然它不会影响任何脚本的功能,但它在很大程度上填充了error_log。从浏览器运行时没有错误。

我尝试过Mac版的TextWrangler编辑器,并在保存时选择Unicode UTF-16 with no BOM选项。然而,在使用Textwrnger创建文件后,请确保扩展名是PHP,并将文件上传到服务器。我试着直接运行文件,在浏览器中得到了以下内容:

<�?php session_start(); ?>

因此,该文件未正确编码。我不知道为什么。使用来自TextEdit或TextWrangler的UTF-8常规编码,如前所述,cron作业中会出现头错误。

我自己写所有的文本而不复制,这样文件中就没有BOM字符了。这个错误有什么真正的解决方案吗?我应该使用ANSI编辑器吗?保存为没有bom选项的utf-16不是用来避免这种错误吗?或者,如果cron中存在会话,则必须出现此错误?

最后,我在cpanel中使用以下cron作业:php -q /path/to/file.php

从cron调用php脚本将调用php-CLI环境,这与从浏览器调用相同的脚本不同
例如,没有cookie,显然默认情况下没有会话。

然而,如果你仍然想享受这些课程,有一种方法。你可以试试这个:

<?php
session_id ("temp");
session_start();
print_r ($_SESSION);
?> 

如果您向我们提供有关最终目标或此脚本背后的用例的信息,我们可以为您提供更多帮助!