我不知道这里出了什么问题:
我试过:
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