我正在尝试在Linux机器上部署使用CodeIgniter框架构建的PHP项目。
由于某种原因,无法将上传的文件从temp移至指定目录。
信息
注释
$_FILES['file']['error'] = 0
(在致电move_uploaded_file
之前和之后)file_exists
为$_FILES['file']['tmp_name']
返回true is_uploaded_file
为$_FILES['file']['tmp_name']
返回true open_basedir
未设置最后,请提防自己,这是网站的另一个副本存在(部署在具有不同目录名的同一台服务器上),并且上传工作正常。区分这两个目录以捕获不同的目录,但没有找到任何内容(除了一些具有一些更新的视图,没有与配置相关的任何文件,.htacess都如此)。
我应该看什么线索?
代码:
$createdFileName = NULL;
$files = $_FILES;
if (count($files) > 0) {
$createdFileName = $this->GUID();
$target_file = './upload/' . $createdFileName;
$path_info = pathinfo($files["file"]["name"]);
if (isset($path_info['extension'])) {
$ext = $path_info['extension'];
} else /*if (!$ext)*/ {
$ext = substr($files['file']['type'], strrpos($files['file']['type'], '/') + 1);
}
$success = move_uploaded_file($files["file"]["tmp_name"], $target_file);
if (!$success) {
$result = json_encode(array('result' => FALSE, 'message' => 'Couldn\'t upload image file'));
}
}
这是与其他项目一起使用的代码,而不与我正在处理的项目一起使用。
我通过远程调试项目了解了error
和其他值。
以下是上传目录的权限。
drwxrwxr-x. 2 demoroot apache 4.0K Jun 9 14:06 upload/
以下是getfacl
的输出:
# file: upload/
# owner: demoroot
# group: apache
user::rwx
group::rwx
other::r-x
答案 0 :(得分:0)
该解决方案正在运行以下命令
chcon -R --type httpd_sys_rw_content_t /path/to/upload/directory
我完全不知道它的作用以及为什么在getfacl
输出看起来还不错而又不运行命令的情况下必须运行它。