2016-04-05 4 views
2

Я не могу выполнить загрузку php. PHP 5.4.45 Centos 6.7. Apache 2.2.27.PHP move_uploaded_file() FAILS без причины

У меня есть HTML-файл:

<form enctype="multipart/form-data" action="test2.php" method="POST"> 
Send this file: <input name="userfile" type="file" /> 
<input type="submit" value="Send File" name="submit"/> 
</form> 

И у меня есть PHP файл:

<?php 
$uploaddir = '/home/michael/public_html/forum/files/'; 
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']); 
echo '<pre>'; 
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
echo "File is valid, and was successfully uploaded.\n"; 
} else { 
echo "Error!\n"; 
} 
echo 'Here is some more debugging info:'; 
print_r($_FILES); 
print "</pre>"; 
?> 

Когда я запускаю его я получаю:

Error! 
Here is some more debugging info:Array 
(
[userfile] => Array 
    (
     [name] => 184958.jpg 
     [type] => image/jpeg 
     [tmp_name] => /tmp/phpupab11 
     [error] => 0 
     [size] => 1473603 
    ) 
) 

И файл не перемещается на новое место. Вместо этого я получаю файл с 0-значным именем с таким же именем в новом месте.

-rw-r--r-- 1 michael michael 0 Apr 5 16:33 184958.jpg 

журнал сервера отмечает ошибку:

[error] [client xx.xx.xx.xx] PHP Warning: move_uploaded_file(): 
Unable to move '/tmp/phpupab11' to '/home/michael/public_html/forum/files/184958.jpg' 
in /home/michael/public_html/forum/test2.php on line 9 

Кажется, что файл загружен хорошо/TMP реж, но не может быть перемещен в другое место. Насколько я читал, это проблема разрешения. Но разрешение папки «файлов» является, кажется, хорошо - 777 (с владельцем Михаэля = имя пользователя):

drwxrwxrwx 2 michael michael 1216512 Apr 5 13:16 files 

Как PHP переменные:

post_max_size 20M 
upload_max_filesize 20M 
upload_tmp_dir /tmp 
file_uploads On 
memory_limit 1024M 

Я бы рад получить некоторую помощь или, по крайней мере, направление искать решение проблемы. Спасибо.

+0

PS Тот же самый код работает на другом сервере, прежде чем я переехал. – Shmuel

+0

насчет' forum' разрешение на папку? – mitkosoft

+0

Проверьте, есть ли у вас предупреждение на php. Активируйте все журналы, как здесь: http://stackoverflow.com/questions/1053424/how-do-i-get-php-errors-to-display Если вы не знаете, t есть предупреждение, означающее, что первый параметр недействителен. Проверьте здесь: http://php.net/manual/en/function.move-uploaded-file.php –

ответ

0

Проблема не была решена. Папка под/home не могла получать загруженные файлы. Ни разрешения, ни права собственности не помогли. В любом случае, нашло обходное решение. Не идеальный и небезопасный, но работает, и это достаточно хорошо, пока я не узнаю причину такого странного поведения. Я создал папку в корневом каталоге dir (/ files_of_forum) и разрешениях (michael: michael 777) и изменил в форуме каталог вложений (что было оригинальным «файлом» на «../../../ ../files_of_forum». переехал все файлы из исходной папки в новую. Теперь все работает. Спасибо все, что пытались помочь.

0

Владелец файла должен быть процессом, на котором работает веб-сервер, вероятно apache. Установите файлы , которым будет принадлежать apache с разрешениями на запись.

+0

Ничего не изменилось. Никого не попробовал: никто, апач: апач, майкл: майкл ... Тот же результат. Работают только папки в корневом каталоге. – Shmuel