PHP mkdir报错:WordPress图片上传目录自动创建失败求助
解决PHP mkdir()创建多级目录失败的问题
你遇到的问题根源很明确:mkdir()函数默认只能创建单级目录,当你要生成的目标目录(比如年龄组子目录)的父目录(国家代码目录)还不存在时,函数没法一次性自动创建嵌套的多级目录,所以会抛出"No such file or directory"警告——目录没建出来,上传的图片自然找不到存放路径,显示破碎。
核心修复方法
PHP的mkdir()有第三个可选参数$recursive,把它设为true,就能开启递归创建多级目录的功能,自动帮你生成所有不存在的父目录。
把你第64行的代码改成这样:
// 替换成你实际使用的目录变量,这里假设用了$countryCode和$ageGroup $targetDir = "/home/wppspeacepals/public_html/{$countryCode}/{$ageGroup}"; // 第三个参数设为true,同时指定安全的目录权限(0755是常用的服务器权限) mkdir($targetDir, 0755, true);
额外优化建议
为了避免重复创建目录的冗余警告,你可以先判断目录是否已存在:
$targetDir = "/home/wppspeacepals/public_html/{$countryCode}/{$ageGroup}"; if (!is_dir($targetDir)) { // 仅当目录不存在时才执行创建 mkdir($targetDir, 0755, true); // 可选:如果mkdir的权限设置没生效,手动补全权限 chmod($targetDir, 0755); }
另外别忘了确认PHP运行进程对根目录/home/wppspeacepals/public_html/有写入权限,不然即使加了递归参数也没法创建目录。
内容的提问来源于stack exchange,提问作者Alfredo Juliano Prince
相关产品推荐
相关产品推荐

