Closed sheghai closed 5 years ago
@sheghai @peinhu 我今天也遇到这个问题,是 因为路径没有创建导致的
@sheghai @peinhu
22 public function createFile($uploadBaseName, $uploadExt){
24 $uploadPartialFile = $this->generateUploadPartialFilePath($uploadBaseName, $uploadExt);
25 $uploadHead = $this->generateUploadHeadPath($uploadBaseName);
26
27 $this->generateFilePath($uploadPartialFile);
28 $this->generateFilePath($uploadHead);
29
30 if ( ! (@touch($uploadPartialFile) && @touch($uploadHead)) ) {
31 return trans('aetherupload::messages.create_file_fail');
32 }
33
34 return false;
35 }
36
37 public function generateFilePath($path) {
39 if (!file_exists($path)){
40 $pos = strrpos($path, DIRECTORY_SEPARATOR);
41 $dir = substr($path, 0,$pos);
42
43 if (! is_dir($dir)){
44 mkdir($dir,0777, true);
45 }
46 }
47 }
我在 vendor/peinhu/aetherupload-laravel/src/Receiver.php 中新增了27到28,37到46行,暂时解决了问题
@abusizhishen 问题解决了,你那方法也对。是0755权限问题,把文件权限改0777就OK了
@sheghai @abusizhishen 抱歉最近比较忙,一直在开发新版本回复晚了。创建文件失败无非就是路径不对或者权限不够造成的,我估计可能你部署项目是将本地整个项目(包括上传目录)直接拷贝传输过去的,而你传输文件所登陆的用户又和运行php的用户不一样,导致了上传目录没有写入权限。这样有两个办法,一是把上传目录的所属用户改成执行php的用户,二是把上传目录的权限改大点,一般不建议把保存文件的那个目录权限设置成777,那样权限太大了,可能会有安全隐患。
在使用默认路径可以上传,而改别的路径后不能上传(两者的权限都给了777),后来发现是新路径下没 _head 和 file(默认的分组目录)这两个目录的原因。手动新建或是用楼上方法创建上述两个目录即可正常上传。
AetherUpload 2 已发布,根据用户反馈和需求,添加分布式部署支持、添加Mime-Type检查、添加头文件redis储存驱动、添加跨域中间件、添加秒传开关配置项、添加自定义黑名单配置项、代码重构优化。
现集中关闭已解决问题,如仍有疑问请跟帖留言。
服务器及环境:centos-7.4.1708+php7.2+Nginx。 不论是改变存储路径还是官方默认路径(也就是啥不该,直接安装步骤操作),都一样错误。可是在本地ok,
希望改进,动态存储路径,比如每个用户存储路径归类,比如用户1存1文件夹下,用户2存2文件夹下。我尝试在config的配置下改变路径,"UPLOAD_PATH" => public_path() . DIRECTORY_SEPARATOR . "Uploads" . DIRECTORY_SEPARATOR . "shops/".session('shopid')。哈哈,session问题来了