2013-06-13 3 views
0

Я пытаюсь отладить проблему с помощью WordPress 3.5.1, где я вообще не могу загружать медиа через HTTP; загрузчик мультимедиа просто говорит «Ошибка HTTP» и терпит неудачу. Чтобы диагностировать, что происходит, я решил написать (то есть копию из w3schools) действительно базового загрузчика файлов PHP, чтобы узнать, есть ли что-то странное, что происходит за кулисами. Но по какой-то причине $_FILE структура не содержит какой-либо информации на всех, даже в самых простых примеров:Загрузка основного изображения PHP не работает

file.php:

<html> 
<body> 

<form action="upload.php" method="post" enctype="multipart/form-data"> 
    <label for="file">Filename:</label> 
    <input type="file" name="file" id="file"><br> 
    <input type="submit" name="submit" value="Submit"> 
</form> 

</body> 
</html> 

upload.php:

<?php 
if ($_FILES["file"]["error"] > 0) 
{ 
    echo "Error: " . $_FILES["file"]["error"] . "<br>"; 
} 
else 
{ 
    echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
    echo "Stored in: " . $_FILES["file"]["tmp_name"]; 
} 
?> 

В каждом браузере я пробовал, с каждым файлом я пробовал, это просто выводит:

Upload: 
Type: 
Size: 0 kB 
Stored in: 

и печать $_FILES показывает, что это всего лишь пустой массив.

Я использую PHP-5 на общем хостинге (Lunarpages), но файл php.ini имеет file_uploads на и размер файлов я пытался нигде даже близко к upload_max_filesize. Я готов бросить свой ноутбук на стену, поэтому любая помощь спасет мне пару тысяч долларов.

+2

Что выводит, когда вы отбрасываете if/else и просто помещаете ' 'в скрипте? – DanFromGermany

+0

^^ Правда. Тем не менее, это довольно простой пример, и результат довольно патологический. Я не беспокоюсь о безопасности и всем этом джазе, я просто хочу убедиться, что PHP работает так, как должно. –

+2

У вас есть права на запись в эту папку? –

ответ

0
<html> 
<body> 

<form action="upload.php" method="post" enctype="multipart/form-data"> 
    <label for="file">Filename:</label> 
    <input type="file" name="file" id="file"><br> 
    <input type="submit" name="submit" value="Submit"> 
</form> 

<?php 
phpinfo(); 
?> 

</body> 
</html> 

Это сработало для меня, $ _FILES не было пустым, используя общую установку Debian, PHP 5.2; попробуйте настроить разрешения ваших файлов и директив на 777

+0

Я попытался настроить разрешения на 777 для всех, но это привело к ошибке внутреннего сервера при загрузке файла php. –

+0

Единственное, что я могу вам помочь, - глубоко изучить «phpinfo();» и настройки вашего хостера. >. < – DanFromGermany

0

У меня была аналогичная проблема с общим хостом. Оказалось, что у меня не было каталога tmp, поэтому ничего не загружалось. Проверьте с вашего хоста, что ваш php.ini настроен правильно и что существует каталог tmp для загрузки, и что у вас есть права на запись для него.

0
$target="Your Path"; 
if(move_uploaded_file($_FILES['file']['tmp_name'], $target)) 
{ 
    echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
    echo "Stored in: " . $_FILES["file"]["tmp_name"]; 
} 
else 
{ 
    echo "Unable to move temp file to target."; 
} 
0

Если еще не поздно, проверьте свои журналы Apache. Скорее всего, причина в том, что apache - и, следовательно, ваш php-интерпретатор - не имеет разрешения на ваш предопределенный каталог загрузки.

Смежные вопросы