我想在使用open打开文件时获得返回资源的系统文件描述符。我假设描述符是一个INT值,通常位于/dev/fd/
内。我知道我可以这样从描述符中读取:
fread("php://fd/$descriptor", $buflen);
但是现在我想获得由PHP的fopen
()打开的资源的描述符。有办法吗?
这是一个相当粗糙的方法,但它的工作!
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;
}
因为您正在编写一个保险丝包装器,所以请考虑不要重复这个PECL扩展的工作。当然,它也没有任何该死的文档,所以这充其量是在黑暗中摸索。