2012-07-03 22 views
7

Uso de PHP 5.3 como php5_module en Apache 2.2 en Windows 7.PHP stdout en Apache

dónde va stdout en la configuración anterior?

probado con siguiente código:

<?php 
    $stdout = fopen('php://stdout', 'w'); 
    fwrite($stdout, "stdout<br />\n"); 

    $output = fopen('php://output', 'w'); 
    fwrite($output, "output<br />\n"); 
?> 

Solo muestra output en el navegador. ¿Qué pasa con stdout?

+0

Compruebe los registros de apache y/o php, ya que esto hace referencia a la secuencia 'stdout' del proceso de PHP, supongo que es allí donde se envía. – nickb

+0

No en Apache o registros php. La salida de PHP stderr está en el registro de Apache. – tkocjan

Respuesta

18

Como muestra manuales en la página de manual de php:// wrappers:

php: // salida es una corriente de sólo escritura que le permite escribir sobre el mecanismo amortiguador de salida de la misma manera como imprimir y echo.

Así que si desea escribir salida al navegador, utilice php://output

Por otro lado, php://stdout

permiten el acceso directo a la correspondiente secuencia de entrada o de salida del proceso PHP .

En el caso de Apache, esta salida es el controlador estándar de Apache que generalmente no se ve en ninguna parte porque es una salida de consola para Apache y generalmente se ejecuta en segundo plano. Si tuviera que ejecutar Apache en primer plano en su consola, todo lo que escriba en php://stdout sería visible en la consola. Dado que Apache se ejecuta en segundo plano, no se captura ni se escribe stdout en ningún lugar normalmente.

Para probar esto, siga estos pasos:

  • Ejecutar Apache en el primer plano (por ejemplo /usr/local/apache2/bin/httpd -D FOREGROUND -k start)
  • dejar la ventana de la consola abierta
  • Ejecutar el script desde el navegador
  • Busque su stdout salida en la consola.