在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