开发者社区> 问答> 正文

LINUX虚拟空间上传图片,读取图片权限不足,具体请见:报错

写了一个图片上传类,在WIN下可以正常操作(从上传图片到图片的读取),可是在LINUX下就不行,而且是在IDC空间商那里使用的环境,服务商说默认在LINUX下文件权限只有600,现在尝试了很多方法,从图片上传到临时文件夹处移植到指定目录下,都无法实现上传图片的权限设置,希望有经验的朋友可以指导下,以下是本人的图片上传类
<?php
//文件上传类
class Fileload{
        
        private $_error;//错误代码
        private $_max_file_size;//超出设置最大值
        private $_type;//类型
        private $_typeArr = array('image/jpeg','image/pjpeg','image/png','image/x-png','image/gif');
        private $_path;//目录设置  
        private $_today; //子目录
        private $_fileName;
        private $_tmp;//临时文件
        private $_linkPath;
        private $_linktotay;
        private $_conf;
        
        
        public function __construct($file,$max_file_siz){
                $this->_conf = conf::getConf();
                $this->_error = $_FILES[$file]['error'];
                $this->_max_file_size = $max_file_siz / 1024 ;
                $this->_type = $_FILES[$file]['type'];
                $this->_path = UPADD_HOST.$this->_conf->img_path;//获取目录设置
                $this->_linktotay = date('Ymd').'/';
                $this->_today = $this->_path.$this->_linktotay;//创建子目录名称
                $this->_fileName = $_FILES[$file]['name'];//获取上传的文件名称
                $this->_tmp = $_FILES[$file]['tmp_name'];
                $this->checkErrorCode();
                $this->checkType();
                $this->checkPath();
                $this->moveload();
        }
        
        //返回路径
        public function getpath(){
                $path = '';
                $this->_linkPath = $path.$this->_linkPath;
                return $this->_linkPath;
        }
        
        //移动文件
        private function moveload(){
                if (is_uploaded_file($this->_tmp)){
                        if (!move_uploaded_file($this->_tmp, $this->setnewName())){
                                        Tool::GetError('警告:上传失败!');
                        }
                }else {
                        Tool::GetError('警告:临时文件不存在!');
                }
        }
        
        //获取文件格式,然后重新立名 chmod
        private function setnewName(){
                $nameArr = explode('.', $this->_fileName);
                $attr =  $nameArr[count($nameArr)-1];
                $newName = date('YmdHis').mt_rand(100, 1000).'.'.$attr;                
                $this->_linkPath =  $this->_conf->img_path.$this->_linktotay.$newName;
                return $this->_today.$newName;
        }
        
        
        //判断目录
        private function checkPath(){
                //设置总目录
                if (!is_dir($this->_path) || !is_writeable($this->_path)){
                        if(!mkdir($this->_path,0777)){
                                TOOL::GetError('处理的总目录没有创建成功!');
                        }
                }
                //设置子目录
                if (!is_dir($this->_today) || !is_writeable($this->_today)){
                        if(!mkdir($this->_today,0777)){
                                TOOL::GetError('处理的子目录没有创建成功!');
                        }
                }
        }
        
        //判断类型
        private function checkType(){
                if(!in_array($this->_type,$this->_typeArr)){
                        Tool::GetError('警告:上传的类型不合法');
                }
        }
        
        //判断上传错误代码
        private function checkErrorCode(){
                if (!empty($this->_error)){
                        switch ($this->_error){
                                case 1 :
                                        Tool::GetError('警告:上传值超过了约定最大值!');
                                        break;
                                case 2 :
                                        Tool::GetError('警告:上传值超过了最大'.$this->_max_file_size.'KB');
                                        break;
                                case 3 :
                                        Tool::GetError('警告:只有部分文件被上传,但数据已全部丢失!');
                                        break;
                                case 4 :
                                        Tool::GetError('警告:没有任何文件被上传!');
                                        break;
                                default:
                                        Tool::GetError('警告:未知错误!');
                        }
                }
        }
        
        
        
}//edn fileload
?>



NEW初始化,设置的参数
$load = new Fileload('url',$_POST['MAX_FILE_SIZE']);
$path = $load->getpath();//返回的路径,设置一个变量用来把地址保存到数据库

展开
收起
kun坤 2020-06-07 16:12:45 700 0
1 条回答
写回答
取消 提交回答
  • 既然是权限问题,就不用看代码了,这不是代码能解决的。

    要么倒腾服务器,要么换空间

    ######回复 @codehelp : 权限问题不是你PHP脚本能解决和设置的。只有一个答案,换空间######难道没有设置的方法?我对LINUX不熟悉,比较疼蛋的!
    2020-06-07 16:12:50
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载