我创建了一个简单的方法来在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
?>