当我使用open打开文件时,我想获取返回资源的系统文件描述符。我假设描述符是INT值,通常在/ dev / fd /
内我知道我可以通过执行以下操作来读取描述符:
fread("php://fd/$descriptor", $buflen);
但现在我想获取PHP fopen
()打开的资源的描述符。有办法吗?
答案 0 :(得分:3)
这是一种相当愚蠢的方式但它有效!
function fd($realpath) {
$dir = '/proc/self/fd/';
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
$filename = $dir . $file;
if (filetype($filename) == 'link' && realpath($filename) == $realpath) {
closedir($dh);
return $file;
}
}
closedir($dh);
}
return FALSE;
}
答案 1 :(得分:0)
因为您正在编写保险丝包装,请考虑not duplicating the effort of this PECL extension。当然,它也没有任何令人讨厌的文件,所以这最好是在黑暗中刺伤。