2016-08-17 2 views
1

Как описано в названии, у меня есть общее веб-приложение в Azure с PHP 5.4, а также установленное расширение PhpManager сайта (через Kudu). Я использовал PhpManager для изменения файла master php.ini и переменной output_buffering до «Off» из значения по умолчанию 4096.Azure/Совместное веб-приложение/PHP/PhpManager/output_buffering

Этот параметр сохраняет (зеленый галочку) и остается, если вы пересматриваете конфигурацию, но если вы просматриваете информацию PHP (даже после перезапуска экземпляра) переменная output_buffering не соблюдается, она по-прежнему показывает 4096, несмотря на то, что конфигурация файла php.ini показывает «Off»

Я попытался добавить как к .user.ini, так и к пользовательский путь ini для создания новой строки;

output_buffering = Off 

Это изменение приводит только output_buffering изменения к «нет значения» в PHP Info - но не нужный «Off» результата.

Поблагодарили бы за какие-либо рекомендации по его отключению. Я попробовал множество ob_flush() flush() ob_start и т. Д., Чтобы заставить в файле не повезло.

Как в стороне, я создал отдельный скрипт в соответствии с нижеследующим, чтобы убедиться, что это не проблема кода, и это все равно выводится одним ударом, а не постепенно, как требуется.

<?php 
echo 'Starting...<br/>'; 
for($i = 0; $i < 5; $i++) { 
    print "$i<br/>"; 
    flush(); 
    sleep(2); 
} 
print 'DONE!<br/>'; 
?> 

Cheers,

T

ответ

2

Вы можете заказ отображение обработчика в web.config в корневом каталоге (если вы не один, просто создать новый web.config). Мы можем использовать responseBufferLimit="0", чтобы отключить буфер ответа в IIS.

Похоже на Use a custom PHP runtime on Azure Web App, но мы будем использовать установленное по умолчанию приложение для запуска php cgi, и мы вручную создадим конфигурацию.

Пожалуйста, попробуйте следующее содержание в вашем web.config:

<configuration> 
     <system.webServer> 
     <handlers> 
      <add name="PHP-FastCGI" 
       path="*.php" 
       verb="GET,HEAD,POST" 
       modules="FastCgiModule" 
       scriptProcessor="D:\Program Files (x86)\PHP\v5.4\php-cgi.exe" 
       resourceType="Either" 
       requireAccess="Script" 
       responseBufferLimit="0" /> 
     </handlers> 
     </system.webServer> 
</configuration> 
1

Попробуйте установить его в 0:

output_buffering = 0 

Из документов, вы можете увидеть, что этот параметр конфигурации ожидает булево или целое число. Когда я тестировал его, я мог заставить его вести себя так, как я ожидал, когда я использовал int.

output_buffering булева/целого

Вы можете включить буферизацию вывода для всех файлов, установив эту директивы «О». Если вы хотите ограничить размер буфера до определенного размера, вы можете использовать максимальное количество байтов вместо «Вкл.», в качестве значения для этой директивы (например, output_buffering = 4096). Начиная с PHP 4.3.5 эта директива всегда выключена в PHP-CLI.

С другой стороны, поскольку по умолчанию 0, я полагаю, что установив ее на что-нибудь неправильное, и не видя «никакой ценности» это то же самое, установив его на 0. :-)