1

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

我努力了:

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 文件是它应该放在的位置(系统/库),我完全不知道这个错误。在本地主机上工作正常,但在服务器上不行。

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

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

有什么线索吗?

4

2 回答 2

3

好的,发现问题:

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

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

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

此外,由于某种原因,如果像这样加载,配置将不起作用:

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

必须像这样初始化配置:

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

那是错误一。

尽管如此,我的上传功能仍然无法正常工作。在我使用 angular 进行上传时调查了 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';

从 system/libraries 文件夹打开 Upload.php 文件并将 @ 放在第 1066 行的 escapeshellarg($file['tmp_name']) 前面,然后将此文件上传到 application/libraries 文件夹下会更好,否则没问题,您可以替换系统的 Upload.php 文件

escapeshellarg() 一样,出于安全原因已禁用

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

毕竟,upload.php 需要一个补丁来解决服务器设置不兼容的问题。感谢大家。

于 2013-09-12T16:55:04.527 回答
0

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

还要确保你有class Upload和没有class upload

于 2013-09-12T16:13:09.763 回答