저는 집의 로컬 네트워크에 작은 파일 공유 서버를 설치하려고하는데 업 로더와 관련된 큰 문제가 있습니다. 문제가있는 단계는 디렉토리 생성 단계이지만, 처음 게시했을 때 아파치 로그 파일에 오류가 없었습니다. 이는 지연 파일에 대한 사용 권한 문제의 결과로 드러났습니다.PHP mkdir이 오류없이 실패했습니다
이것은 관련 로그 항목입니다. 나는 십자가 디렉토리 인// 서버와 sudo는 chmod를 0777/서버/* sudo는 chmod를 0777/서버 를 실행했기 때문에
[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
그것은 나를 혼란.
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:
을 다음과 코드가 내가 PHP mkdir: Permission denied problem의 모든 제안을 시도하고있다
<form enctype="multipart/form-data" action="upload_movie.php" method="POST">
<input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
입니다 전화로 출력이
<?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";
}
?>
다음과 같이
내 코드입니다 나는 selinux를 꺼 놓았다. 나는 fedora 17을 사용하고 있습니다. 서버는 다른 것을 포함하고있는 ext4 파티션에서 실행 중입니다.
의견에 제안 된대로 시도했습니다. $ error = error_get_last(); echo $ error [ 'message']; 어느 쪽이든 정의되지 않은 색인 : 파일
'error_reporting'을 (를) 활성화 했습니까? '/'루트 디렉토리가 world-writable 인 경우를 제외하고는 메시지가 있어야합니다. (아니,하지 마!) – mario
오류를 얻으려면이 추가, 그것은 일종의 권한 문제, 어떤 식 으로든 오류 코드를 시도해보십시오 코드 : $ error = error_get_last(); echo $ error [ 'message']; –
마리오가 맞다면 디렉토리의 사용 권한을 확인해야합니다. –