PHP mkdir失败而没有错误
我正试图在我家的局域网上安装一个小型文件共享服务器,但上传程序遇到了一些大问题。它似乎失败的一步是目录创建步骤,然而,当我第一次发布此步骤时,Apache日志文件中没有错误,这是由于lag文件的权限问题造成的 这是相关的日志条目PHP mkdir失败而没有错误,php,upload,mkdir,Php,Upload,Mkdir,我正试图在我家的局域网上安装一个小型文件共享服务器,但上传程序遇到了一些大问题。它似乎失败的一步是目录创建步骤,然而,当我第一次发布此步骤时,Apache日志文件中没有错误,这是由于lag文件的权限问题造成的 这是相关的日志条目 [Mon Mar 25 18:43:05 2013] [error] [client 10.0.0.17] PHP Warning: mkdir(): Permission denied in /server/upload_movie.php on line 10,
[Mon Mar 25 18:43:05 2013] [error] [client 10.0.0.17] PHP Warning: mkdir(): Permission denied in /server/upload_movie.php on line 10, referer: http://10.0.0.17/upload_movie.html
这使我困惑,因为我已经跑了
sudo chmod 0777/server/*
sudo chmod 0777/服务器
使用/server/作为rood目录
我的代码如下
<?php
echo "starting". "<br>";
$allowedExts = array("mp4", "mpg", "avi", "mkv");
$extension = end(explode(".", $_FILES["uplodedfile"]["name"]));
echo "filetype parsed". "<br>";
$path = "/downloads/movies/unsorted/";
echo "checking upload directory". "<br>";
if(!is_dir($path)){
echo "upload directory not found, creating...";
if (mkdir($path,0777,true))
{
echo "directory creation complete". "<br>";
}
else
{
echo "directory creation failed at ".$path."<br>";
}
}
echo "checking file". "<br>";
if (false)
{
echo "filetype and size passed". "<br>";
if ($_FILES["uplodedfile"]["error"] > 0)
{
header('Location: upload_failure.php?file='.$_FILES["uplodedfile"]['name'].'&error='.$_FILES["uplodedfile"]["error"]);
exit();
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
if (file_exists("upload/" . $_FILES["uplodedfile"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists on server. ". "<br>";
}
else
{
echo "creating perminant copy of file". "<br>";
move_uploaded_file($_FILES["uplodedfile"]["tmp_name"],
$path."/" . $_FILES["uplodedfile"]["name"]);
echo "Stored in: " . "movie_uploads/" . $_FILES["file"]["name"]. "<br>";
}
}
header('Location: upload_success.php?type=movie');
exit();
}
else
{
echo "error:<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Name: " . $_FILES["file"]["name"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
echo "extension: ".$extension;
exit();
// echo "Invalid file";
}
?>
starting
filetype parsed
checking upload directory
upload directory not found, creating...directory creation failed at /downloads/movies/unsorted/
checking file
error:
Type:
Name:
Size: 0 kB
Temp file:
extension:
调用它的代码是
<form enctype="multipart/form-data" action="upload_movie.php" method="POST">
<input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
我尝试了中的所有建议,并关闭了selinux。我用的是软呢帽17。服务器正在一个不包含任何其他内容的ext4分区上运行
正如评论中所建议的那样,我尝试了
$error=error_get_last();echo$error['message'];
哪一年
未定义索引:文件您似乎已为/server目录设置了正确的权限。但是您的服务器想要写入/downloads-目录。您应该使用以下命令启动并运行:
Sudo chmod 777 /download
你的错误信息告诉了一切。这是文件写入权限问题。如果要在/downloads/movies/unsorted/中写入文件,则需要为所有用户设置此目录的写入权限(777)。但是您的意思是,您已经检查了下载目录的权限,但是您可能没有设置定期目录的权限。所以在上传文件之前,请尝试下面的命令
Sudo chmod -R 777 /download
您是否启用了错误报告功能?应该有一条消息,除非您的
/
根目录是可写的。(不,不要这样做!)添加此项以获取错误,这似乎是一种权限问题,请尝试代码以获取错误代码:$error=error\u get\u last();echo$error['message'];mario是正确的,您应该或者应该说必须检查目录的权限。错误报告已启用您是否确保当前工作目录具有正确的权限?(读、写、执行(777))