最有效PHP安全加固方式是直接修改php.ini:禁用exec等高危函数、设置open_basedir限制路径、expose_php=Off隐藏版本、log_errors=On记录错误、phar.readonly=On及allow_url_fopen=Off阻断Phar与远程加载。

直接改 php.ini 是最有效、最快落地的PHP安全加固方式。不用动代码,改完重启服务就能起效,尤其适合漏洞已知但修复周期长的场景。
禁用高危函数
攻击者一旦突破前端,常靠 exec、system、eval 等函数执行命令或读取文件。禁用它们能大幅压缩利用链。
- 在
php.ini中找到disable_functions行,追加:exec,system,shell_exec,passthru,proc_open,popen,eval,assert,symlink,link,putenv,chmod,chown,chgrp - 注意用英文逗号分隔,不能有空格
- 改完必须重启 PHP-FPM 或 Web 服务器(如
systemctl restart php-fpm)
限制脚本可访问路径
防止文件包含、路径遍历类漏洞读取 /etc/passwd 或源码文件。
- 设置
open_basedir = "/var/www/html:/tmp:/var/lib/php/sessions"(路径按实际调整) - 确保包含网站根目录、临时上传目录、session 存储路径,否则功能会异常
- 虚拟主机环境可在 Apache 的
VirtualHost或 Nginx 的fastcgi_param中单独配置
隐藏版本与错误信息
不暴露 PHP 版本号和运行细节,能显著降低被自动化扫描器盯上的概率。
立即学习“PHP免费学习笔记(深入)”;
- 设
expose_php = Off关闭X-Powered-By响应头 - 设
display_errors = Off和html_errors = Off,避免页面输出错误堆栈 - 同时开启日志:
log_errors = On,并指定安全路径:error_log = /var/log/php_errors.log - Nginx 用户还需加
fastcgi_hide_header X-Powered-By;;Apache 用户加Header unset X-Powered-By
加固 Phar 和远程加载
Phar 反序列化和远程文件包含是近年高频利用点,需从源头堵住。
- 设
phar.readonly = On,禁止运行时创建/修改 Phar 归档 - 设
phar.require_hash = On,强制 Phar 必须带有效签名才可加载 - 禁用远程文件加载:
allow_url_fopen = Off、allow_url_include = Off



















