我不知道如何解释这个(只看标题......),但是一个浏览器接收的php输出不同于另一个。
我有以下html / php代码:
<p><?= $lang->getW('t1_title') ?></p>
应该打印一些文字。在firefox中,我可以完美地看到该文本(并且通过irc确认ie和edge也是如此)。但是像Chromium(和chrome)和Opera这样的浏览器没有显示文本,而是在引号之间显示代码:
<p>t1_title</p>
以防万一它与服务器端有关:函数尝试从memcached或数据库中获取文本(下次将其保存在memcached中),所以最后它返回对应的字符串到那个id(在这种情况下是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不存在。