Codeigniter“无法加载请求的文件:upload.php”

时间:2013-09-12 16:10:22

标签: php codeigniter

我对这里的错误一无所知:

我试过了:

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类,由于某些原因,它没有从控制器中找到,这对我来说非常奇怪。

任何线索?

2 个答案:

答案 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