You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP8.1调用fclose报TypeError:参数应为资源类型而非字符串

问题分析与解决

你的致命错误核心原因是**file_get_contents()返回的是文件内容的字符串,而fclose()要求传入的是合法的文件资源句柄**。PHP7对类型检查相对宽松,不会触发致命错误,但PHP8.1启用了严格的类型校验,直接暴露了这个逻辑错误。

代码里存在两个关键问题:

  • 误用file_get_contents()的第二个参数:该函数的第二个参数是use_include_path,仅接受布尔值(true/false),你传入的'w'属于无效参数。
  • 多余的fclose($file)调用:file_get_contents()是一次性读取文件内容到字符串的函数,不会创建持久的文件资源句柄,完全不需要用fclose()关闭。只有fopen()这类函数打开的资源才需要手动关闭。

修正后的代码:

$remoteFile = '/in/' . $row['verificatie'] . '_' . $bestandsnaam . '.xml';
// 移除无效参数,正确获取远程文件内容
$fileContent = file_get_contents("ssh2.sftp://$sftp$remoteFile");
// 建议添加读取失败的错误处理
if ($fileContent === false) {
    die('远程XML文件读取失败');
}
$xml = simplexml_load_string($fileContent);
$json = json_encode($xml);
$response = json_decode($json);
// 移除多余的fclose调用

内容的提问来源于stack exchange,提问作者Matthijs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 07:33:20