我有一个用于将文件上传到服务器的PHP脚本。为了我自己的内部便利,文件将按提交者的名称进行排序。我的脚本检查目标目录是否存在,如果不存在,则会创建目录。因此:
$abort = false;
$targetDir = 'uploads/' . $userName;
if (!is_dir($targetDir)) {
if(!mkdir($targetDir)) {
echo '<p>Can''t create ' . $targetDir . '</p>';
$abort = true;
}
}
if (!$abort) {
move_uploaded_file(...)
}
我第一次访问此代码时(当目标目录不存在时),它正常运行,创建所需的目标目录,并将上传的文件移动到所需的目录。
随后的每一次,我都会打不开......不能创造......&#34;错误。
使用我的FTP客户端,我可以看到目标目录已经创建,权限为0755,因此任何用户都应该有权至少查看该文件(并不是因为相同的&#34;用户& #34;创建文件(PHP伪用户)是用户试图访问它。
为什么没有&#34; is_dir&#34;识别这个新创建的目录?
答案 0 :(得分:1)
你的回音中有语法错误:修复了这里......
$abort = false;
$targetDir = 'uploads/' . $userName;
if (!is_dir($targetDir)) {
if(!mkdir($targetDir)) {
echo "<p>Can't create " . $targetDir . "</p>";
$abort = true;
}
}
if (!$abort) {
move_uploaded_file(...)
}
答案 1 :(得分:-1)
我的实际代码包含一个愚蠢的拼写错误,这意味着我实际上并没有检查$ targetDir的存在,我正在检查$ targeDir的存在。我真的希望PHP能够关闭自动变量。