PHP中如何让fopen指向指定目录下以变量为文件名的文件
可尝试的解决方法
1. 先修复代码语法错误
你当前的代码本身存在两处语法问题,会直接导致执行失败:
- PHP中字符串拼接需要用
.连接符,你现有的路径写法遗漏了拼接符号 fopen的模式参数w是字符串类型,必须加引号包裹- 额外说明:你已经用到了
file_put_contents,不需要再调用fopen创建文件,冗余的文件句柄占用反而可能导致后续重命名失败
修正后的参考代码如下:
<?php $txt = $_POST['content']; $UUID = $_POST['UUID']; // 先判断目录是否存在,不存在则自动创建 $dir = './generated/'; if (!file_exists($dir)) { mkdir($dir, 0755, true); } $txtPath = $dir . $UUID . '.txt'; $configPath = $dir . $UUID . '.mobileconfig'; // 写入内容 file_put_contents($txtPath, $txt); // 重命名 rename($txtPath, $configPath); ?>
2. 确认目录权限配置正确
完成代码修正后如果还是无法写入,检查以下配置:
- 确认
generated文件夹和你的PHP处理文件在同级目录 - 给
generated文件夹配置web运行用户的读写权限:Linux环境下可执行命令chown www:www ./generated && chmod 755 ./generated,如果是面板管理直接在文件管理界面给对应目录开读写权限即可 - 如果还是异常,可以在代码中加调试语句输出目录权限状态:
var_dump(is_writable($dir));查看返回结果是否为true
内容的提问来源于stack exchange,提问作者jasonhe
相关产品推荐
相关产品推荐

