在PHP 5.2.3中,「fdopen」用於讀取/寫入由另一個應用程序打開的文件描述符。從文件描述符獲取文件指針
fdopen(<fileDescriptorId>,"rw"); //It worked fine with PHP 5.2.3
升級PHP 5.3.2之後,它拋出 「undefined reference to 'fdopen' function
」。
請在PHP 5.3.2或任何解決方法建議什麼是替代。
在PHP 5.2.3中,「fdopen」用於讀取/寫入由另一個應用程序打開的文件描述符。從文件描述符獲取文件指針
fdopen(<fileDescriptorId>,"rw"); //It worked fine with PHP 5.2.3
升級PHP 5.3.2之後,它拋出 「undefined reference to 'fdopen' function
」。
請在PHP 5.3.2或任何解決方法建議什麼是替代。
該fdopen
與C語言。 PHP中沒有這樣的功能。我認爲你錯誤地輸入了PHP的fopen函數,對吧?糾正我。謝謝
是的,我也在PHP 5.2.3 API中搜索「fdopen」,但找不到這個。 但是它沒有報告任何與PHP 5.2.3 [錯誤檢查並沒有錯誤類型]的錯誤可能是因爲VolkerK建議可能已經使用該版本構建了一些其他擴展。 – 2010-04-15 15:52:35
你的這個fdopen()是否由自定義php擴展提供?
在Linux/Unix服務器
function fdopen($id, $mode) {
return fopen("/proc/self/fd/".(int)$id, $mode);
}
威力工作。
謝謝。 PHP-cgi binary由在jail目錄(沙箱)中運行的web服務器調用。因此,它無法訪問文件(套接字)路徑(「/ proc/self/fd /」。(int)$ id ,$模式)直接。 有沒有什麼方法可以在PHP中讀/寫給定的文件描述符編號[假設文件路徑不知道在這種情況下是不可訪問的]。 請讓我知道您的意見。 – 2010-04-16 12:08:40
由於PHP 5.3.6(並且仍然有效,並與PHP 7.2.1工作),正確的方法來訪問文件的描述符是使用fopen
與php://fd:
$fd = 3;
$pipe = fopen("php://fd/{$fd}", 'w');
fwrite($pipe, 'hello!');
僅供參考,截至PHP/5.3.6,'php:// fd' wrapper [支持](http://php.net/manual/en/wrappers.php.php)。 – DaveRandom 2012-03-30 11:44:47