我创建了一个 Controller 来处理文件发布,将上传的文件移动到index.php文件旁边的文件夹(不在应用程序文件夹中,因为我想通过http直接访问这些文件)。
上传在基于 Windows 的服务器上完美运行,但在 Linux 上则不行。每台服务器和我的本地计算机上的 PHP 版本仍然相同。
代码:
$config['upload_path'] = 'files/pictures/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '10240';
$config['encrypt_name'] = true;
$this->upload->initialize($config);
if ( ! $this->upload->do_upload('Filedata'))
{
//error handling
}
else
{
$data = array('upload_data' => $this->upload->data());
imageResize($data['upload_data']['full_path'],600);
}
正如你所看到的,它没什么特别的,它就是一个基于 CI 的普通图片 uploader 。 为什么我在 Linux 上遇到错误?
我尝试了多种上传路径的方法,但都不起作用。文件夹具有 chmod 777。
$config['upload_path'] = './files/pictures/';
$config['upload_path'] = './files/pictures';
$config['upload_path'] = 'files/pictures/';
$config['upload_path'] = 'files/pictures';
这些都不能在 Linux 下工作。
最佳答案
临时目录丢失。上传的文件首先移动到临时目录,然后再移动到目的地。目录名称可能在某处配置,或者您可以在文档中找到它。该目录在Linux服务器上不存在,在Windows服务器上存在。
关于php - windows下可以上传文件,linux下不行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3147053/