为Amazon服务器设置CRON作业时出错


Error setting CRON job for Amazon server

我创建了一个简单的方法来在cron job中显示" help World"

我运行php index.php tools message

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, HTTP_HOST没有设置,因为这个HTTP_HOST是由web服务器设置的。

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

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

将Hostname作为参数传递给CLI

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

mycronjob.php

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