PHP包括不应该工作

时间:2014-12-02 09:19:23

标签: php include

我包括来自单独文件的lang。我怎么会得到错误而且我不知道为什么。 下面的代码显示$ lang [' YES']的正确翻译,如果borowser的语言是SK,只要它的CS显示错误:未定义的变量:lang。

首先我认为问题可以在翻译文件中,所以我COPY / PASTE sk.php并将其重命名为cs.php,仍然得到相同的错误。

我的代码中的文件回显在CS中显示:

1.$user_lang = cs,sk-SK;q=0.5
2.$user_lang = cs
3.$lang_file = cs.php

路径是正确的,因为它适用于sk.php,cs.php文件也存在,否则它将显示包含错误。 (我也检查确认),我怎么还得到我的错误。有人可以给我一些帮助吗?

            $user_lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
            $_SESSION['lang'] = $user_lang;
            setcookie('lang', $user_lang, time() + (3600 * 24 * 30));
            echo $user_lang;
            $user_lang = substr($user_lang, 0, 2); 
            echo "<br>";
            echo $user_lang;
            switch ($user_lang) 
            {
                case 'sk':
                $lang_file = 'sk.php';
                break;
                case 'cs':
                $lang_file = 'cs.php';
                break;             
                default:
                $lang_file = 'cs.php';
            }
            echo "<br>";
            echo $lang_file;
            echo "<br>";
            $include_lang_path = 'languages/'.$lang_file;
            echo $include_lang_path;
            include_once $include_lang_path;
                echo $lang['YES']

谢谢大家阅读本文!

2 个答案:

答案 0 :(得分:2)

你可以在这里试试......

$include_lang_path = './languages/' . $lang_file;
include_once( $include_lang_path );

include_once( './languages/' . $lang_file );
实际上是什么一样。总是使用前面的./


您也可以尝试

include( $include_lang_path );

而不是

include_once $include_lang_path;
  

include_once()语句在执行脚本期间包含并评估指定的文件。这是一种类似于include()语句的行为,唯一的区别是如果已经包含文件中的代码,则不会再次包含它。顾名思义,它只包含一次。

所以可能之前有一些包括在内。

答案 1 :(得分:0)

您的问题可能有很多种可能性:

echo $lang_file;输出了什么?首先,确保该文件存在。

另外,检查PHP include_path配置中是否存在目录(语言)。

如果没有,您可以尝试在路径相对于当前文件的路径前面添加.,例如

$include_lang_path = './languages/'.$lang_file;