首页 > 解决方案 > 使用 PHP 的多语言网站无法在实时服务器上运行,只有 Vagrant

问题描述

我正在用 PHP 构建一个多语言网站,并让它在我的 Vagrant 框中完美启动并运行,根据 $SESSION[lang] 变量更改文本,将网站上传到我的实时服务器,突然语言不再改变,它只是坚持使用默认语言。

这是我用来为网站提供相应语言文件的代码,其中包括与我想在每种语言中使用的文本相关的数组:

<?php
ob_start();

if(!isset($_SESSION)) {
    session_start();
}


// language switch 

if (!isset($_SESSION['lang']))
    $_SESSION['lang'] = "en";
else if (isset($_GET['lang']) && ($_SESSION['lang'] != $_GET['lang']) && !empty($_GET['lang'])) {
    if ($_GET['lang'] == "en")
        $_SESSION['lang'] = "en";
    else if ($_GET['lang'] == "es")
        $_SESSION['lang'] = "es";
    else if ($_GET['lang'] == "de")
        $_SESSION['lang'] = "de";
}

require_once ('content/language/' . $_SESSION['lang'] . '.php');

我在开发和生产中有两台不同的服务器,我知道并不理想。我的流浪盒子:Ubuntu Xenial 64 和 PHP 7.0.32 & Apache 2.4.18

我今天将我的 Live Server 更新为:Centos 6.10 和 PHP 7.1 和 Apache 2.4

升级后我重新启动了 apache 服务器,因为我认为这可能会有所帮助,但没有成功。如前所述,它仅使用默认语言,并且在我单击任何语言切换按钮时都不会更新。在开发环境中,它完全按预期工作。我真的很感激这里可能出错的任何想法,我不知道在哪里看。

提前致谢!!莎拉。

标签: phpservermultilingualproduction-environment

解决方案


好的,我终于找到了原因,以防万一发生在其他人身上,我在页面开始之前有评论

ob_start(); 

和会话开始代码。

通过将它作为我文件中的第一件事解决了这个问题,没有空白空间,之前什么都没有。发现它在这里阅读其他线程。

感谢您的贡献!


推荐阅读