magento — PHP ob_gzhandler дополнительные символы

У меня есть смешанный веб-сайт, где у нас есть ExpressionEngine CMS с магазином Magento.
На нашем сайте EE у меня есть шаблон, где я вызываю плагин для получения информации о корзине магазина.
Мы используем аутентификацию Magento, поэтому зарегистрированный пользователь является пользователем Magento.

Мы хотим показать что-то вроде этого:

первый

Код в плагине подключается к Magento, получает зарегистрированного пользователя, если он вошел в систему, и устанавливает количество товаров в корзине.

Это HTML-код, который плагин должен вернуть в шаблон:

<span class="carticon">(0)</span><a href="http://www.example.com/store/checkout/cart/">My Cart</a><span>Welcome, MB34!</span><a href="http://www.example.com/store/customer/account/logout/">Logout</a>

Но если я включу gZip на ExpressionEngine, я получу ERR_CONTENT_DECODING_FAILED исключение, потому что Magento не имеет встроенного gZip. В настоящее время у нас не включен mod_deflate, так как же EE сможет gZip? Это должно быть через ob_gzhandler.

Теперь, если я изменю свой плагин, чтобы использовать ob_gzhandler следующим образом:

ob_start("ob_gzhandler");
echo trim($result);
ob_end_flush();

Я получаю дополнительные символы в конце вывода:

второй

Есть идеи, что вызывает это и как это исправить?

Мы скоро включим mod_deflate; это исправит? Я имею в виду, что тогда мне не придется использовать ob_gzhandler, верно?

0

Решение

Когда используешь ob_gzhandler важно, чтобы вы не смешивали контент с другими кодировками. Заставляя ob_end_flush() возможно, вы вызываете прекращение работы этого буфера до того, как закончите отправку контента. Это может быть вызвано простой пустой строкой в ​​конце файла. Я предлагаю вам пропустить ob_end_flush() и пусть буфер завершится естественным образом, когда ваш PHP-скрипт завершится.

0

Другие решения

Этот код работает для меня при использовании ob_get_contents

ob_start("ob_gzhandler");
echo trim($result);
$gzcontent = ob_get_contents();
ob_end_clean();
0

По вопросам рекламы [email protected]