Ok, found the issues:
First: When trying to call an upload function on the controller, directly on the address bar, the error:
"Unable to load the requested file: upload.php"
Is directly caused by no file being sent for the function, as I found while tailing the CI log file.
Also, for some reason, config would not work if loaded like this:
$this->load->library('upload', $config);
Had to init the config like this:
$this->load->library('upload');
$this->upload->initialize($config);
That was error one.
Nevertheless, my upload function wasn't working anyway. After investigating firebug console errors as I'm using angular to do the upload, I've found the second issue:
A PHP Error was encountered
Severity: Warning
Message: escapeshellarg() has been disabled for security reasons
Filename: libraries/Upload.php
So a quick search on stack overflow got me the answer:
$cmd = 'file --brief --mime ' . @escapeshellarg($file['tmp_name']) . '
2>&1';
Open Upload.php file from system/libraries folder and put @ in front
of escapeshellarg($file['tmp_name']) at line 1066 and second thing
upload this file under application/libraries folder that will be
better, other wise no problem, you can replace system's Upload.php
file
As in escapeshellarg() has been disabled for security reasons
So I have manually updated the upload.php file and voilá.
After all, upload.php needed a patch for a server setup incompatibility.
Thanks everyone.