2012-07-03 78 views
7

使用PHP 5.3作爲php5_module在Apache 2.2的在Windows 7PHP標準輸出上的Apache

哪裏標準輸出在上述配置中去呢?在瀏覽器

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

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

這僅顯示output

測試用下面的代碼。標準輸出會發生什麼?

+0

檢查Apache和/或PHP日誌,因爲這是引用PHP進程的'stdout'流,我猜這就是它發送的地方。 – nickb

+0

不在apache或php日誌中。 PHP stderr輸出在Apache日誌中。 – tkocjan

回答

18

作爲php:// wrappers手冊頁面上的手動所示:

PHP://輸出是隻寫的流,允許你寫入 輸出緩衝機構以同樣的方式作爲print and echo

所以,如果你想要寫輸出到瀏覽器,使用php://output

在另一方面,php://stdout

允許對 PHP進程相應的輸入或輸出流的直接訪問。

在Apache中的情況下,該輸出是Apache的標準輸出句柄,一般從來沒有在任何地方看到,因爲這是Apache的控制檯輸出,它通常是在後臺運行。如果您要在控制檯的前臺運行Apache,則在控制檯上可以看到任何寫入php://stdout的內容。由於Apache在後臺運行,因此不會在任何地方正常捕獲或寫入任何stdout數據。

要進行測試,請按照下列步驟操作:

  • 運行Apache的前景(如/usr/local/apache2/bin/httpd -D FOREGROUND -k start
  • 懸空控制檯窗口
  • 從瀏覽器
  • 查找運行腳本,你stdout在控制檯上輸出。