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

CodeIgniter 2使用内置FTP类从FTP下载文件报permission denied错误如何解决

CodeIgniter 2.2.0 FTP下载报错 ftp_get() failed to open stream : permission denied 排查方案

错误核心原因

该报错本质是PHP进程无权限将下载的文件写入指定本地目录,或FTP账号无远程文件的读取权限,同时你的现有代码也存在参数传递错误。


排查步骤

1. 修正代码参数错误

CodeIgniter 2.2.0内置FTP类的download()方法要求:

  • 第一个参数为远程单个文件的完整路径,不能仅传目录
  • 第二个参数为本地保存的完整文件路径,不能仅传目录
    你的现有代码两个参数都传了目录,会直接触发路径读写错误。

2. 检查本地目录权限

你指定的本地存储目录,需要保证运行PHP的系统用户(通常为www-data、apache、nginx等)拥有读写权限:

  • Linux环境可执行命令修改权限:chmod -R 755 你的本地目录绝对路径
  • 同步修改目录所有者和PHP运行用户一致:chown -R www-data:www-data 你的本地目录绝对路径
  • 排查阶段可临时设置为777权限验证是否为权限问题,验证完成后改回安全权限

3. 验证FTP端权限

使用FileZilla等FTP客户端,用你代码里配置的同一套FTP账号密码登录,手动尝试下载目标远程文件,确认FTP账号有该文件的读取权限。

4. 调整FTP配置参数

  • 大部分FTP服务要求开启被动模式才能正常传输文件,将$config['passive']改为TRUE
  • 排查阶段将$config['debug']改为TRUE,可以输出更详细的连接、传输错误日志
  • 增加FTP连接状态判断,避免连接失败后直接执行下载逻辑

修正后代码示例

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class C_FTP extends CI_Controller 
{
    public function openfile($fileName)
    {
        $this->load->library('ftp');
        $config['hostname'] = 'ftp_host';
        $config['username'] = 'ftp_username';
        $config['password'] = 'ftp_password';
        $config['port']     = 'ftp_port';
        $config['debug']    = TRUE; // 排查完问题可改回FALSE
        $config['passive']  = TRUE;

        // 先判断FTP是否连接成功
        if ($this->ftp->connect($config)) {
            // 补全远程和本地的完整文件路径,不要只传目录
            $remote_file_path = 'path/to/folder/' . $fileName;
            // 建议用CI内置常量拼绝对路径,避免相对路径出错,FCPATH是入口文件所在根目录
            $local_file_path = FCPATH . 'local/path/' . $fileName;
            
            $download_result = $this->ftp->download($remote_file_path, $local_file_path, 'auto');
            echo $download_result ? '下载成功' : '下载失败';
            
            $this->ftp->close();
        } else {
            echo 'FTP连接失败,请检查配置';
        }
    }
}
?>

内容的提问来源于stack exchange,提问作者Daffa Al

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:30:05