PHP注意:未定义的索引:第59行的/xxx/xxx/xxx/domain.com/public_html/system/startup.php中的SERVER_PORT

时间:2016-06-19 10:10:43

标签: php cron opencart2.x

我的开放式网站出现问题。我想通过直接管理员运行一个cron-job。我在电子邮件中收到了这封信:

  

PHP注意:未定义索引:SERVER_PORT in   第59行/xxx/xxx/xxx/domain.com/public_html/system/startup.php

代码:

// Check if SSL
if ((isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) || $_SERVER['SERVER_PORT'] == 443) {
    $_SERVER['HTTPS'] = true;
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') {
    $_SERVER['HTTPS'] = true;
} else {
    $_SERVER['HTTPS'] = false;
}

3 个答案:

答案 0 :(得分:2)

似乎是system / startup.php中opencart代码中的一个错误。 您可以看到未解决的问题here

以下解决方案对我有用:
改变行

@Html.TextBoxFor(model => model.ImagePath, 
                           new { type = "file", multiple = "multiple", NAME = "files"  })

if ((isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) || $_SERVER['SERVER_PORT'] == 443) { 

最好使用vqmod执行此操作,这样就不会更改核心文件。

答案 1 :(得分:1)

我认为真正的问题是该命令是从cron调用的,而不是从你的web服务器调用的(这将填充_SERVER数组)。在PHP文件中,除SERVER_PORT之外的所有其他键(例如_SERVER['DOCUMENT_ROOT'])都填充了合理的值(如果未设置)。

尝试在违规行(59)之前添加以下行:

if (!isset($_SERVER['SERVER_PORT'])) {
    $_SERVER['SERVER_PORT'] = getenv('SERVER_PORT');
}

并在运行PHP命令之前将SERVER_PORT定义为环境变量。如果您的端口始终为80443,您也可以直接设置它,而不是从环境中获取它。

答案 2 :(得分:0)

更改此if ((isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) || $_SERVER['SERVER_PORT'] == 443) {

到此:

if ((isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) || (isset($_SERVER['SERVER_PORT'])) && ($_SERVER['SERVER_PORT'] == 443)) {

说明:好像在您的$_SERVER数组上,SERVER_PORT不可用 - 因此PHP正在显示通知。您可以通过在检查值是否等于443之前检查数组中是否存在该键来修复它。