本文目录导读:

- 关闭文件句柄(fclose)
- 关闭数据库连接
- 禁用 PHP 函数(php.ini 配置)
- 关闭输出缓冲
- 关闭 cURL 句柄
- 终止脚本执行(exit/die)
- 关闭错误报告(生产环境推荐)
- 关闭 session
- 注意事项
在 PHP 中,“关闭函数”通常有以下几种不同的含义,我分别说明最常见的几种情况及对应的正确关闭方法:
关闭文件句柄(fclose)
当你使用 fopen() 打开文件后,必须使用 fclose() 关闭,释放资源。
$file = fopen("test.txt", "r");
// 读取文件内容...
fclose($file); // 关闭文件
不关闭的后果:文件句柄泄漏,可能导致服务器文件句柄耗尽。
关闭数据库连接
MySQLi 方式
$conn = new mysqli("localhost", "user", "pass", "db");
// 执行查询...
$conn->close(); // 关闭连接
PDO 方式(通常不需要显式关闭)
$pdo = new PDO("mysql:host=localhost;dbname=test", "user", "pass");
$pdo = null; // 设置为 null 即可关闭连接
禁用 PHP 函数(php.ini 配置)
如果你想在服务器上禁止某些危险函数(如 exec, system, shell_exec 等),在 php.ini 中配置:
disable_functions = exec, system, shell_exec, passthru, popen, proc_open
修改后重启 Web 服务器生效(Apache:service httpd restart 或 Nginx + PHP-FPM:service php-fpm restart)
关闭输出缓冲
ob_start(); // 开启输出缓冲 echo "内容"; ob_end_flush(); // 输出并关闭缓冲 // 或者 ob_end_clean(); // 清空缓冲并关闭,不输出
关闭 cURL 句柄
$ch = curl_init("https://example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch); // 关闭 cURL 资源
终止脚本执行(exit/die)
exit("程序被终止"); // 输出消息并终止
die("发生错误"); // 同上
关闭错误报告(生产环境推荐)
在生产环境中关闭错误显示,但记录到日志:
// 关闭错误显示
ini_set('display_errors', 0);
ini_set('display_startup_errors', 0);
error_reporting(E_ALL); // 仍然记录所有错误到日志
// 或者完全关闭错误报告(不推荐)
error_reporting(0);
关闭 session
session_start(); // 使用 session... session_write_close(); // 关闭 session 写入,允许后续页面并发请求
注意事项
- PHP 脚本执行完毕会自动清理资源,但对于长连接或高并发场景,显式关闭非常重要
- 使用
register_shutdown_function()可以注册脚本结束时的清理函数 - 使用
__destruct()魔术方法可以在对象销毁时自动执行清理
你的具体场景是什么?是想关闭文件、数据库连接,还是想禁用某些危险函数?告诉我详细信息,我可以给出更精确的代码示例。