代码点火器“无法加载请求的文件:上传.php”


Codeigniter "Unable to load the requested file: upload.php"

我不知道这里出了什么问题:

我试过:

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"

上传.php文件是它应该在的地方(系统/库),我根本不知道这个错误。在本地主机上工作正常,但在服务器上不能。

也许是因为 CI 安装在子域上?对我来说,所有配置都在 CI 配置上正确设置。

上传.php是一个 CI 类,由于某种原因,它不是从控制器中找到的,这对我来说很奇怪。

有什么线索吗?

好的,发现了问题:

第一:尝试在控制器上调用上传函数时,直接在地址栏上,出现错误:

 "Unable to load the requested file: upload.php"

直接原因是没有为函数发送文件,正如我在跟踪 CI 日志文件时发现的那样。

此外,由于某种原因,如果像这样加载,config 将无法工作:

$this->load->library('upload', $config);

必须像这样初始化配置:

$this->load->library('upload');
$this->upload->initialize($config);

这是错误之一。

尽管如此,我的上传功能无论如何都不起作用。在调查了Firebug控制台错误之后,因为我使用角度进行上传,我发现了第二个问题:

A PHP Error was encountered
Severity: Warning
Message: escapeshellarg() has been disabled for security reasons
Filename: libraries/Upload.php

因此,对堆栈溢出的快速搜索得到了答案:

$cmd = '文件 --brief --mime ' . @escapeshellarg($file['tmp_name']) .' 2>和1';

从系统/库文件夹中打开上传.php文件并将@放在前面 1066 行的 escapeshellarg($file['tmp_name']) 和第二件事 在应用程序/库文件夹下上传此文件,该文件将是 更好,其他明智的没问题,您可以替换系统的上传.php 文件

如在 escapeshellarg() 中出于安全原因已被禁用

所以我手动更新了上传.php文件,瞧。

毕竟,上传.php需要一个服务器设置不兼容的补丁。谢谢大家。

我发现(在 Linux 上)如果您的文件名以大写字母开头,有时会出现加载问题,但您尝试使用小写进行加载,反之亦然(我不记得这是否与库有关)。

还要确保您有class Upload而不是class upload