PHPStudy默认配置存在安全隐患,需通过修改php.ini中disable_functions禁用exec、system、shell_exec等危险函数,并重启服务验证生效;同时应关闭display_errors、expose_php,设置open_basedir和禁用远程文件包含以强化整体安全。

PHPStudy 默认配置下可能存在安全隐患,尤其是危险函数未禁用时,容易被攻击者利用执行系统命令、读取敏感文件等。禁用危险函数是提升 PHP 安全性的基础措施之一,关键在于修改 php.ini 中的 disable_functions 配置项,并确保其生效。
确认当前 PHP 版本及 php.ini 路径
不同 PHP 版本(如 5.6、7.3、8.0)和 PHPStudy 版本(如 PHPStudy v8.x 或老版 PHPStudy Pro)对应的配置文件位置可能不同。务必先确认正在使用的 PHP 版本和实际加载的 php.ini 文件路径:
- 在 Web 目录下新建
info.php,内容为<?php phpinfo(); ?>,通过浏览器访问并查找 “Loaded Configuration File” 行 - 或在命令行中执行
php -i | findstr "Loaded Configuration File"(Windows)或php -i | grep "Loaded Configuration File"(Linux/macOS) - 常见路径示例:
C:\phpstudy_pro\Extensions\php\php7.4.3\php.ini或/www/server/php/74/etc/php.ini
在 disable_functions 中添加常用危险函数
打开确认后的 php.ini,找到 disable_functions 行(若无则新增),在其值中追加以下函数(用英文逗号分隔,注意不要有多余空格):
-
执行类:
exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec -
文件操作类:
phpinfo,show_source,highlight_file,readfile,fpassthru,file_get_contents,fopen,fwrite,fputs,fgets,fgetss,fread,file,unlink,move_uploaded_file,copy,rename,chown,chgrp,chmod -
代码注入类:
eval,assert,call_user_func,call_user_func_array,create_function,unserialize,ini_set,putenv,setenv,dl - 建议保留
getenv(部分框架依赖),但禁用putenv;如需兼容 Laravel 或 ThinkPHP,可酌情保留date_default_timezone_set等安全函数
示例完整配置行:
立即学习“PHP免费学习笔记(深入)”;
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec,phpinfo,show_source,highlight_file,readfile,fpassthru,file_get_contents,fopen,fwrite,fputs,fgets,fgetss,fread,file,unlink,move_uploaded_file,copy,rename,chown,chgrp,chmod,eval,assert,call_user_func,call_user_func_array,create_function,unserialize,ini_set,putenv,dl重启服务并验证是否生效
修改保存后必须重启 PHP 服务(不是仅重启 Apache/Nginx):
- PHPStudy v8:在面板中点击对应 PHP 版本右侧的“重启”按钮
- 老版 PHPStudy Pro:点击“服务”→“重启 PHP”或直接重启整个环境
- 验证方式:在
info.php页面搜索 “disable_functions”,确认列表已更新;或写测试脚本:<?php var_dump(ini_get('disable_functions')); ?> - 进一步验证:尝试调用
exec('whoami')或phpinfo(),应返回Warning: exec() has been disabled...
补充建议:配合其他安全措施使用
仅禁用函数不能替代整体安全策略,还需同步检查:
- 关闭
display_errors = Off,防止错误信息泄露路径、版本等敏感数据 - 设置
expose_php = Off,隐藏 HTTP 响应头中的X-Powered-By: PHP/7.4.3 - 限制
open_basedir(尤其虚拟主机或多用户环境),例如:open_basedir = D:/wwwroot/:D:/temp/ - 禁用远程文件包含:
allow_url_fopen = Off、allow_url_include = Off - 定期更新 PHPStudy 及 PHP 版本,避免已知漏洞(如旧版 PHPStudy 曾曝出后门问题)



















