我刚刚将CI应用程序移动到真实服务器上,用户发现三个可选文件上传,两个用于常规文档和图像,第三个专用于csv文件,奇怪的是前两个上传工作好没有警告,文件上传没有问题,但第三个文件,csv文件,不断向我发送警告,并避免任何文件上传和它应该上传的目录也没有创建,代码为第一个文件是这个:
if (isset($_POST['save'])){
$this->load->library('upload');
$field = "file1";
$nombreCarpeta = preg_replace('/\s+/', '.', $this->session->userdata("username"));
$path = $this->config->item('server_root')."/codeigniter/uploads/".$nombreCarpeta."/";
if(!file_exists($path)){
mkdir($path, 0766);
}
$config["upload_path"] = $path;
$config["overwrite"] = "TRUE";
$config["remove_spaces"] = "TRUE";
$config["allowed_types"] = "txt|pdf|gif|jpg|png|tiff|doc|docx|rtf|jpeg";
$config["max_size"] = "1024*2048";
$config["max_width"] = "1024";
$config["max_height"] = "768";
$config["xss_clean"] = "FALSE";
$this->upload->initialize($config);
$this->upload->do_upload($field);
if($_FILES["file1"]['error'] == 0){
if ($this->upload->do_upload($field)){
$data = $this->upload->data();
array_push($arreglo, $data['file_name']);
}else{
$errors = $this->upload->display_errors();
}
}
.... same code, this time for file2
$field = "file3";
$pathDos = $this->config->item('server_root')."/codeigniter/listas/".$nombreCarpeta."/";
if(!file_exists($pathDos)){
mkdir($pathDos, 0777);
}
$config["upload_path"] = $pathDos;
$config["overwrite"] = "TRUE";
$config["remove_spaces"] = "TRUE";
$config["allowed_types"] = "csv";
$config["max_size"] = "1024*512";
$config["xss_clean"] = "FALSE";
$this->upload->initialize($config);
$this->upload->do_upload($field);
if($_FILES["file3"]['error'] == 0){
if ($this->upload->do_upload($field)){
$data = $this->upload->data();
array_push($arregloDos, $data['file_name']);
}else{
$errors = $this->upload->display_errors();
}
}
}
正如您所看到的,程序是相同的,除了一些上传配置,文件需要上传到两个以前创建的具有777权限,上传和列表的文件夹,其中,将动态创建单个文件夹,命名为用户名,为了区分用户文件,正如我所说,文档和图像目录(上传)没有问题,ls -l看起来像这样:
drwxrwxrwx. 2 root root 4096 Jan 14 05:59 listas
drwxrwxrwx. 3 root root 4096 Jan 13 11:18 uploads
ls -l里面的内容如下所示:
drwxr-xr-x. 2 apache apache 4096 Jan 13 13:29 administrator
用户管理员上传了几张图片,因此,在上传文件之前,在上传内成功创建了一个名为administrator的文件夹,但尝试上传csv文件时没有成功,即使文件夹listas具有777权限,没有文件夹内部listas已创建并且没有上传文件,因为“mkdir():权限被拒绝”警告!,因为您可以看到目录具有适当的权限,我做了一个测试,在listas中创建文件夹管理员并赋予它777权限和chown -ing / chgrp-it到apache,没有结果......任何想法?我正在开发CentOS ... thanx i.a。
答案 0 :(得分:0)
可能是因为csv上传问题,这是一个codeigniter错误。
打开application/config/mimes.php
&更新line 13 (probably)
'csv' => array('application/vnd.ms-excel', 'text/anytext', 'text/plain', 'text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel'),