You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel脚本升级时遇ErrorException:copy()因安全原因被禁用

解决Laravel升级时copy()函数被禁用的问题

升级Laravel版本时出现ErrorException: Warning: copy() has been disabled for security reasons错误,核心原因是服务器的PHP配置里将copy()函数加入了禁用列表,导致Laravel升级流程无法正常调用该函数完成文件复制操作。

排查步骤

  • 创建一个包含<?php phpinfo(); ?>的文件,访问后找到disable_functions配置项,确认copy是否在禁用列表中。
  • 或者通过CLI执行命令查看:php -i | grep disable_functions

解决方案

1. 有服务器管理权限的情况

  • 找到php.ini文件位置(可通过phpinfo里的Loaded Configuration File项查看)。
  • 打开php.ini,定位到disable_functions行,删除其中的copy,(注意保持其他函数的逗号分隔格式)。
  • 重启PHP服务,比如执行systemctl restart php-fpm(根据服务器环境调整服务名称)。

2. 无服务器权限的情况(如虚拟主机)

  • 联系主机服务商,申请将copy函数从disable_functions中移除。
  • 应急替代方案:修改Laravel升级相关代码,用file_get_contents()和file_put_contents()组合替代copy(),示例:
    // 原代码
    copy($source, $dest);
    // 替换为
    file_put_contents($dest, file_get_contents($source));
    
    注意:此方法适合小文件,大文件复制可能有性能问题,且需确保目标路径有写入权限。

注意事项

  • 修改php.ini后必须重启PHP服务,配置才会生效。
  • 若使用Composer升级Laravel,Composer底层依赖copy(),优先建议开启该函数而非修改代码。
  • 不要随意移除disable_functions中的其他函数,避免引入安全风险。

内容的提问来源于stack exchange,提问作者muhammed alsmawi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 22:57:20