【问题标题】:Error setting CRON job for Amazon server为 Amazon 服务器设置 CRON 作业时出错
【发布时间】:2015-08-18 18:30:31
【问题描述】:

我创建了一个简单的方法,只是在 cron 作业中显示“Hellp World”。

我跑了 php index.php 工具消息

ubuntu@ip-xxx-xx-xx-xx:/var/www/html$ php index.php tools message
PHP Notice:  Undefined index: HTTP_HOST in /var/www/html/application/config/constants.php on line 176
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Notice</p>
<p>Message:  Undefined index: REMOTE_ADDR</p>
<p>Filename: core/Input.php</p>
<p>Line Number: 351</p>

</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  Cannot modify header information - headers already sent by (output started at /var/www/html/system/core/Exceptions.php:185)</p>
<p>Filename: libraries/Session.php</p>
<p>Line Number: 688</p>

这就是我得到的。在我的常量页面中,我定义了一个变量

define('RELATIVE_PATH','http://'.$_SERVER['HTTP_HOST'].'/');

提前致谢。

【问题讨论】:

标签: php codeigniter cron


【解决方案1】:

您的代码中不可能有未定义的索引。 HTTP_HOST 如果你在命令行中运行 php 是没有设置的,因为这个 HTTP_HOST 是由 web 服务器设置的。

就像它写的here 一样,如果你从一个cron 运行PHP,它就像CGI 一样运行,许多环境变量不是由服务器设置的。在这种情况下,没有 Web 服务器,也没有 HTTP_HOST

尽管如此,Web 浏览器将 HOST header 设置为对 Web 服务器的请求,因此如果我们从 Web 浏览器运行,则存在 HTTP 环境。在这种情况下,我找到了解决方法-

将主机名作为参数传递给 CLI

$php -f mycronjob.php HOST=www.mywebsite.com #example website

mycronjob.php

<?php
$host = $_GET['HOST']; // Get the host via GET params
?>

【讨论】:

  • 感谢您的信息。如果我忽略了还有其他问题正在显示。您能帮忙吗?
  • 1.未定义索引:REMOTE_ADDR 2.无法修改标头信息-标头已由