繁体   English   中英

php中的数组出现Linux错误:503服务不可用

[英]Linux error for array in php: 503 Service Unavailable

这行代码在Linux上导致错误。

$p_event_a = strtotime($p_events['date_time'][$evn]);

如果我注释掉for循环,错误将消失。 为什么数组会导致503错误?

    $p_events = array();

// Retrieve Public Events
    for ( $ev = 0 ; $ev < $nev ; $ev++ ) {
        $p_event_r = strtotime($ev_order[$ev]);
        for ( $evn = 0 ; $evn < $nev ; $evn++ ) {
            $p_event_a = strtotime($p_events['date_time'][$evn]);
            if ( $p_event_a == $p_event_r ) {
                $evnt_date = date('Y-m-d H:i', $p_event_a);
                if ( $evnt_date <= $endd && $evnt_date >= $stad ) {
                    $public_event = '<span> <a>'.$p_events['title'][$evn].'</a> </span>';           
                    $event['tit'] = $public_event;
                    $event['cat'] = $aevent[0];
                    $event['cnm'] = $aevent[1];
                    $event['seq'] = $aevent[2];             
                    $event['col'] = $aevent[5];
                    $event['bco'] = $aevent[6];
                    $event['inf'] = '';
                    $evtList[$evnt_date][] = $event;        
                }
                break;
            }
        }
    }

大家要注意,这是一个完全荒谬的猜测。

首先,您需要启用错误报告以在屏幕上“查看”错误:

ini_set('display_errors',1);
error_reporting(-1);

否则,您需要检查错误日志以查看发生了什么。

我猜? 您遇到“索引越界”错误,因为您正在尝试访问不存在的数组索引。 (计算$p_events['date_time'][$evn]的元素,看看它们是否是您认为应该的数字)

$nev来自哪里? 是来自count()调用吗?

如果您的for循环等效于:

for ( $evn = 0 ; $evn < count($whatever) ; $evn++ ) {

注意count()返回元素的数量,但是在循环中,您从0开始计数,因此您将循环一个额外的结果。 (例如,如果count = 5,则您有:0 1 2 3 4 5,这是6个元素)。

这会解决吗?

for ( $evn = 0 ; $evn < ($nev-1) ; $evn++ ) {

(括号在$ nev-1中不是必需的,但这是为了清楚起见)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM