簡體   English   中英

fopen 為 php://stdin 返回空內容

[英]fopen returns empty content for php://stdin

我無法讓 fopen 讀取 PHP 中的內容 stream。 沒有拋出錯誤,內容始終為空字符串。

這是我的代碼:

$contents='';
$handle = fopen("php://stdin", "r") or error_log('got some error');

while (!feof($handle)) {
    $contents .= fread($handle, 8192);
}
fclose($handle);
error_log($contents);

然后從 Postman 我在我的服務器 url 上發送 POST 請求,例如

發布 http://myserverurl/index.php

我確實根據上述請求發送了發布數據,我也嘗試過表單編碼、二進制和原始數據。

但是 error_log 將空字符串記錄到日志文件中,這意味着 fopen 確實有效,但它得到了空內容。

我也檢查了 php.ini 設置,並且 allow_url_fopen 設置也為真。

我正在使用 PHP7.1-fpm 在 nginx 上對此進行測試。 我最近從 Apache 和 PHP 5.6 切換到 nginx 和 php7.1-fpm 並停止工作。

Apache 和 PHP5.6 完全可以正常工作。

這里有什么問題? 任何幫助將不勝感激。

PHP的默認流可能存在一些誤解。

  • 如果您將 PHP 腳本作為命令運行,CLI 界面將為您提供php://stdin

  • 如果您在 web 服務器/cgi/php-fpm 環境中運行 PHP 腳本,則根本沒有php://stdin 您將獲得php://input stream (用於 POST 正文)。

參考:支持的協議和包裝器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM