Я не знаю, как это объяснить (см. Заголовок …), но один браузер получает другой вывод php, чем другой.
У меня есть следующий HTML / PHP код:
<p><?= $lang->getW('t1_title') ?></p>
Это должно напечатать некоторый текст. В Firefox я прекрасно вижу этот текст (и это подтверждается через irc, то есть и по краям). Но браузеры, такие как Chromium (и chrome) и Opera, не отображают текст, а отображают код между кавычками:
<p>t1_title</p>
На тот случай, если это как-то связано со стороной сервера: функция пытается получить текст из memcached или из базы данных (сохраняя его в memcached в следующий раз), поэтому в конце она возвращает строку, соответствующую этому идентификатору. (t1_title
в этом случае)
Функциональный код:
public function getW($word, $array = NULL) {
$sql = TRUE;
if ($this->cacheAvailable) {
$text = $this->memCached->get("en_$word");
if ( FALSE !== $text ) {
$sql = FALSE;
$word = $text;
}
}
if ( TRUE === $sql ) {
$mysqli = $this->aet->getAetSql();
if ($stmt = $mysqli->prepare('SELECT * FROM locales_en WHERE name = ? LIMIT 1')) {
$stmt->bind_param('s', $word);
$stmt->execute();
$stmt->store_result();
$word = FALSE;
if ($stmt->num_rows === 1) {
$stmt->bind_result($id, $name, $text);
$stmt->fetch();
$text = nl2br($text);
$this->memCached->set("en_$word", $text);
$word = $text;
}
}
}
if ( NULL !== $array && FALSE !== $word ) {
$word = $this->getVar($word, $array);
}
return $word;
}
Изменить: решение состоит в том, чтобы никогда не забывать использовать код отладки, как:
echo $mysqli->error;
для развития.
Но я только что заметил, что загрузил только 1 таблицу локалей, а не остальные (locales_es, locales_fr и т. Д.). Так вот что было бы сообщение об ошибке: таблица locales_xx не существует.
Задача ещё не решена.
Других решений пока нет …