首先修改 php.ini 文件禁用危险函数,如 exec、system、eval 等,通过 disable_functions 配置项实现;然后重启 Web 服务并创建测试脚本验证函数是否生效;最后设置 open_basedir 限制文件访问范围,确保php 脚本 只能在指定目录内操作,提升整体安全性。

如果您在配置 PHP 环境时希望提升服务器的安全性,防止恶意代码利用系统函数执行攻击,则需要对 PHP 中的危险函数进行禁用。这是防止远程命令执行、文件泄露等安全 事件 的重要手段。
本文运行环境:Dell Poweredge R750,ubuntu 22.04
一、通过php.ini 禁用危险函数
修改 PHP 的主 配置文件php.ini 是最直接且有效的禁用危险函数的方式。该方法适用于所有使用该 PHP 环境的应用程序,能够全局性地阻止危险函数的调用。
1、使用文本编辑器打开 php.ini 文件,通常位于 /etc/php/8.1/apache2/php.ini 或/usr/local/php/etc/php.ini路径下。
立即学习“PHP 免费学习笔记(深入)”;
2、查找配置项disable_functions,若已被注释则去掉前面的分号。
3、在 disable_functions 后添加需禁用的函数,多个函数之间使用英文逗号分隔。建议禁用以下函数:exec,passthru,shell_exec,system,proc_open,popen,eval,assert,symlink,link,chmod,chown,chgrp,ini_set,dl。
4、保存文件并重启 Web 服务,如 apache 或nginx,使配置生效。
二、验证危险函数是否成功禁用
在完成配置更改后,必须验证目标函数是否已被正确禁用,以确保安全策略已生效。可通过编写测试脚本模拟调用被禁函数来检测结果。
1、创建一个名为 test.php 的文件,放置于 Web 根目录下。
2、在文件中添加代码:<?php echo exec(‘whoami’); ?>。
3、通过 浏览器 访问该文件,如果页面空白或提示函数被禁用,则表示配置成功。
4、也可使用 php -r “var_dump(ini_get(‘disable_functions’));” 命令在终端查看当前禁用函数列表。
三、使用 Open_basedir 限制文件访问范围
即使禁用了危险函数,仍可能存在路径遍历等风险。通过设置 open_basedir 可将 PHP 脚本的文件操作限制在指定目录内,进一步提升安全性。
1、在 php.ini 中找到或添加 open_basedir 指令。
2、将其值设置为网站根目录,例如:/var/www/html:/tmp,允许多个目录时使用冒号分隔。
3、保存配置并重启服务,此后 PHP 脚本无法访问指定目录之外的文件。
4、注意确保包含临时目录(如 /tmp),避免影响正常功能如文件上传。


