织梦全新安装需要关闭哪些函数

一、为什么需要解除函数禁用

为了安全,PHP环境(尤其宝塔、LNMP一键包)默认禁用了一批"危险函数"。织梦CMS的部分功能依赖其中一些函数,若被禁用会导致安装失败、采集异常、生成静态失败等问题。安装前需要根据织梦实际需求,精准解除个别函数的禁用。

二、织梦依赖的函数清单

函数用途是否必须
putenv设置环境变量(中文处理)必须
exec执行外部命令(部分采集)可选
shell_exec通过shell执行命令可选
system执行外部程序并显示输出可选
passthru执行外部命令并原始输出可选
chroot改变根目录无需
proc_open执行命令并打开管道可选

必解除:putenv

织梦核心依赖,用于设置字符集环境变量,影响中文显示与编码转换。若被禁用,安装时环境检测会报错,运行后可能出现乱码。

按需解除:exec / shell_exec

仅在使用织梦的远程采集、HTML转PDF、自动生成缩略图等高级功能时需要。普通内容站点无需解除。

三、宝塔面板操作步骤

  1. 宝塔后台 - 软件商店。
  2. 找到 PHP 7.4(或你使用的版本)- 设置。
  3. 点击"禁用函数"。
  4. 列表中找到 putenv
  5. 点击右侧"删除"。
  6. 确认删除,无需重启PHP即可生效。
  7. 如需 exec、shell_exec,按同样方式删除。

四、命令行修改php.ini

# 查找php.ini位置
php --ini
# 或宝塔路径 /www/server/php/74/etc/php.ini

# 编辑
vi /www/server/php/74/etc/php.ini

# 找到 disable_functions 行
disable_functions=passthru,exec,system,chroot,chmod,...

# 删除其中的 putenv(必删)、exec、shell_exec(按需)

# 保存后重启PHP-FPM
/etc/init.d/php-fpm-74 restart

五、验证函数是否已解除

# 创建测试文件 test.php
<?php
echo function_exists('putenv') ? 'putenv 可用' : 'putenv 被禁用';
echo function_exists('exec') ? 'exec 可用' : 'exec 被禁用';
?>

# 浏览器访问 http://yourdomain.com/test.php
# 验证后立即删除该文件

六、安装向导检测

访问 /install/,环境检测页面会列出被禁用的关键函数。若 putenv 显示红叉,必须解除后才能继续安装。

七、安全建议

仅解除织梦明确需要的函数,切勿为图方便把 disable_functions 清空;exec、shell_exec、system 等命令执行函数若非必须,建议保留禁用,避免被getshell后任意执行命令。

最小化解除原则

八、注意事项

解除函数后建议在站点层面增加防护:安装宝塔WAF防火墙、限制PHP文件上传、定期扫描webshell;对 install、data、templets 等目录禁止PHP执行,从源头降低被利用风险。

九、行动指引

安装前按清单精准解除函数,安装完成后回顾是否有多余解除项,能恢复的尽量恢复;生产环境务必配合WAF与定期备份,避免因函数放开带来的潜在安全风险。