我对这里的错误一无所知:
我试过了:
get_instance()->load->library('upload', $config);
$this->load->library('upload', $config);
$this->load->library('upload'); $this->upload->initialize($config);
我总是得到
"Unable to load the requested file: upload.php"
Upload.php文件应该在哪里(系统/库),我根本不知道这个错误。 在localhost上运行正常,但在服务器上运行不正常。
也许是因为CI安装在子域上?对我来说,所有配置都在CI配置上正确设置。
Upload.php是一个CI类,由于某些原因,它没有从控制器中找到,这对我来说非常奇怪。
任何线索?
答案 0 :(得分:3)
好的,找到了问题:
第一:当试图在控制器上直接在地址栏上调用上传功能时,错误:
"Unable to load the requested file: upload.php"
直接导致没有为该函数发送文件,正如我在追踪CI日志文件时发现的那样。
此外,出于某种原因,如果像下面那样加载配置将不起作用:
$this->load->library('upload', $config);
必须像这样初始化配置:
$this->load->library('upload');
$this->upload->initialize($config);
那是错误之一。
然而,我的上传功能无论如何都没有用。在调查firebug控制台错误后我正在使用angular进行上传,我发现了第二个问题:
A PHP Error was encountered
Severity: Warning
Message: escapeshellarg() has been disabled for security reasons
Filename: libraries/Upload.php
所以快速搜索堆栈溢出给我的答案是:
$ cmd ='file --brief --mime'。 @escapeshellarg($ file ['tmp_name'])。 “ 2 - ;&安培; 1' ;
从system / libraries文件夹中打开Upload.php文件并将@放在前面 of escapeshellarg($ file ['tmp_name'])在第1066行和第二件事 将此文件上传到application / libraries文件夹下 更好,其他明智没问题,你可以替换系统的Upload.php 文件
与escapeshellarg() has been disabled for security reasons
一样所以我手动更新了upload.php文件和voilá。
毕竟,upload.php需要一个服务器设置不兼容的补丁。 谢谢大家。
答案 1 :(得分:0)
我发现(在Linux上)如果你的文件名以大写字母开头,有时会出现加载问题,但是你尝试使用小写加载,反之亦然(我不记得这是否与库有关)。
另请确保您有class Upload
而非class upload