使用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服务器,因为我认为这可能会有所帮助,但没有成功。如前所述,它只是使用默认语言,当我点击任何语言开关按钮时都不会更新。在开发环境中,它完全按照预期工作。我真的很感激任何可能出现问题的想法,我不知道该去哪里看。

提前感谢!!莎拉。

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

ob_start(); 

以及会话开始代码。

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

感谢您的贡献!

最新更新