PHP 中 BASE URL 更改后的白屏


White screen after BASE URL change in PHP?

我们的网站中有一个脚本,其中包含一个

_BASEURL_

但是我们需要将其更改为HTTPS(安全),因此我们将代码更改为:

https://www.domain.com/

但是我们现在得到白屏。如果有人可以提供帮助,下面是代码。

    public function getSlideshow() {
    $id_shop = (int)Context::getContext()->shop->id;
    $id_lang = (int)$this->context->language->id;
    $sql = 'SELECT * FROM `' . _DB_PREFIX_ . 'pos_sequence` ps 
        LEFT JOIN `' . _DB_PREFIX_ . 'pos_sequence_lang`  psl ON ps.id_pos_sequence = psl.id_pos_sequence   
        LEFT JOIN `' . _DB_PREFIX_ . 'pos_sequence_shop`  s ON ps.id_pos_sequence = s.id_pos_sequence   
        WHERE s.`id_shop` ='.$id_shop.'  
        AND psl.`id_lang` ='.$id_lang.' 
        AND ps.`active` =1
        ORDER BY `porder` ASC';
    $slides = Db::getInstance()->ExecuteS($sql);
    if(is_array($slides)){
        $limit = 0;
        $arraySlides = array();
        foreach($slides  as $key => $slideArray) {
             //echo "<pre>"; print_r($slideArray); 
            $newSlide = array();
             foreach($slideArray as $k => $v) {
                if($k=='bgimage' ){
                       $v = https://www.domain.com/.'modules/possequence/images/bgimage_'.$slideArray['id_pos_sequence'].'.jpg';
                 }
                 if($k=='image' ){
                       $v = https://www.domain.com/.'modules/possequence/images/image_'.$slideArray['id_pos_sequence'].'.jpg';
                 }
                 if($k=='image2' ){
                       $v = https://www.domain.com/.'modules/possequence/images/image2_'.$slideArray['id_pos_sequence'].'.jpg';
                 }
                 $newSlide[$k] = $v;
             }
             $arraySlides[$key] = $newSlide;
        }
    }
    return $arraySlides;
}

我们更改的部分是"bgimage"-"image"和"image2"。

你的某些行缺少开场引号......

if($k=='bgimage') {
    $v = 'https://www.domain.com/modules/possequence/images/bgimage_'.$slideArray['id_pos_sequence'].'.jpg';
}
if($k=='image') {
    $v = 'https://www.domain.com/modules/possequence/images/image_'.$slideArray['id_pos_sequence'].'.jpg';
}
if($k=='image2') {
    $v = 'https://www.domain.com/modules/possequence/images/image2_'.$slideArray['id_pos_sequence'].'.jpg';
}

编辑:再次阅读您的问题后,您可能实际上可以更新代码中某处的_BASEURL_常量。省去自己的头痛,只需搜索设置的位置(它看起来像这样):

define('_BASEURL_', 'http://domain.com');

如果你在那里更新它,它将省去在你的代码中找到所有需要更改的地方。

您的 PHP 代码无效,因此解析器因错误而停止。由于您的服务器设置为不在前端显示错误(这很好),因此您只会得到一个白页。您应该能够在 Web 服务器的日志中找到错误消息。

用单引号将 https://www.domain.com/的三个出现项括起来,如下所示:

$v = 'https://www.domain.com/'.'modules/possequence/images/bgimage_'.$slideArray['id_pos_sequence'].'.jpg';

或者简单地将该部分放入已经存在的字符串中:

$v = 'https://www.domain.com/modules/possequence/images/bgimage_'.$slideArray['id_pos_sequence'].'.jpg';