mkdir()
对我不起作用。这段代码出了什么问题?
foreach($_FILES['documents']['tmp_name'] as $key => $tmp_name)
{
$file_name = $key.$_FILES['documents']['name'][$key];
$file_size =$_FILES['documents']['size'][$key];
$file_tmp =$_FILES['documents']['tmp_name'][$key];
$file_type=$_FILES['documents']['type'][$key];
$name = $_POST['uname'][$key];
$email = $_POST['uemail'][$key];
$password = $_POST['epass'][$key];
$file_names = time().$file_name;
$query = "INSERT INTO `table` VALUES
('', '$name', '', '', '$email', '$password', 1, '', 1, '', '$file_names', '$file_names', '', '', '', '', 1, '', '', '1', '')";
$resultl = $db->insert($query);
$userId = mysql_insert_id();
$output_dir = $_SERVER['DOCUMENT_ROOT']."uploads/users/$userId/";
mkdir($output_dir, 0777);
chmod($output_dir, 0777);
目前尚未创建。我在Stack Overflow中搜索了解决方案并应用了其中一些但仍然没有成功。我正在使用wamp
;当我移动上传的图像而不创建目录时,它会移动文件。
答案 0 :(得分:3)
运行PHP脚本的用户(很可能是www-data
)应该具有在$ output_dir中创建文件夹的权限,因此您可能需要检查确实是这种情况。
更重要的是,忽略系统调用的返回值通常是一种糟糕的编程习惯。如果失败,mkdir
将返回FALSE,您应该对其进行测试,然后确保您的代码在目录创建失败时采取相应行动...当mkdir
失败时,它也会记录警告,因此您应该能够通过查看日志获得有关实际问题的更多信息(前提是您正在记录警告)。
答案 1 :(得分:1)
mkdir('$output_dir' ,0777) ;
chmod('$output_dir',0777);
应该是
mkdir($output_dir ,0777) ;
chmod($output_dir,0777);
答案 2 :(得分:1)
尝试此操作,如果没有工作,请发布消息。
<?php
....
$output_dir = $_SERVER['DOCUMENT_ROOT']."/uploads/users/$userId/";
echo $output_dir;
$res = mkdir($output_dir ,0777, true) ;
var_dump($res);
答案 3 :(得分:1)
$_SERVER['DOCUMENT_ROOT']."/uploads/users/$userId/";
尝试在$ _SERVER [&#39; DOCUMENT_ROOT&#39;]之后添加目录分隔符。
答案 4 :(得分:1)
$output_dir = $_SERVER['DOCUMENT_ROOT'] . "/uploads/users/$userId/";
mkdir($output_dir, 0777, true);
答案 5 :(得分:0)
为uploads
文件夹授予适当的权限,以便www-data
用户可以使用uploads/users
权限遍历该文件夹和write
子文件夹。