2011-01-05 3 views
0

странная вещь произошла ... Я создал интернет-магазин в PHP. Все работало нормально, но когда мы переместили сайт с нашего ftp на свой, у нас возникла проблема. Мы не можем больше загружать фотографии ...Загрузить фото PHP

 if (file_exists("../productimages/" . $_FILES["picture"]["name"])) 
    { 
     $feedback = "<div class=\"voegproducttoefeedback\">Please change name of product<b><big> \"".$_FILES["picture"]["name"] . "\" 
     </big></b>The name already occurs in the database</div> "; 
    } else 
     { 

     $tmp_name = $_FILES["picture"]["tmp_name"]; 
     $name = $_FILES["picture"]["name"]; 
     move_uploaded_file($tmp_name, "../productimages/$name"); 


     if(file_exists("../productimages/$name")) { 
     $feedback2 = "succeed"; 
     } 
     else { 
       $feedback2 = "failed"; 
     } 

    if ($product->saveproduct($_DB)) { 
     $feedback = "<div class=\"voegproducttoefeedback\">Product <b><big>\"".$product->naam."\"</big></b> created with succes</div>"; 
     } else { 
     $feedback = "<div class=\"voegproducttoefeedback\">Not enough information to create product</div>"; 
     } 
    }}}?> 

ответ

5

Попробуйте изменить права доступа целевой каталог (../productimages/)

+0

Возможно, у Мичиэля даже нет доступа к '../' на другом сервере. – Lipis

+0

Также убедитесь, что каталог существует в этом относительном местоположении. – Phoenix

+0

Право на productimages и корень (httpdocs) - 775. Более чем достаточно, я надеюсь :) @Phoenix, что вы имеете в виду? – Michiel

0

Как говорит Goo, проверка прав доступа, но и убедиться, что PHP настроен разрешить загрузку и установить максимальный размер загрузки.

Проверить, что файл file_uploads установлен в 'on', а upload_max_filesize установлен на разумный предел.

+0

Но тот же скрипт работает на моем личном сервере ... Просто не на их ... Это нормально? – Michiel

+0

Да, это распространено - хотя сценарии одинаковы, основные среды (как PHP, так и ОС хоста) могут отличаться. Для загрузки файлов вы полагаетесь на ряд конфигураций, которые должны быть установлены правильно, чтобы это работало. Даже веб-сервер может быть настроен по-разному, что приводит к проблемам, но это менее вероятно в вашем экземпляре. – Purpletoucan

+0

Хорошо, я попробую. Заранее спасибо! – Michiel

0

Если у вас есть к ним доступ, проверьте свои журналы ошибок PHP.

Ваш хост скорее всего не разрешил разрешения на запись для учетной записи, отвечающей за процесс PHP. Вам нужно будет посмотреть, смогут ли они включить это.

+0

Как мне получить к ним доступ? У меня есть доступ к корню сервера, но, я думаю, я просто получил какую-то учетную запись для загрузки на ftp. Не сам root-доступ – Michiel

+0

Зависит от настройки вашего хоста. Вам нужно будет связаться с ними, чтобы выяснить, какой доступ (если есть) они предоставляют для этих журналов. –

0

Хорошо, проблема (частичная) решена. Я изменил разрешения productimages ... Но для успеха процесса потребовалось разрешение 777 ... Не очень безопасно. Вот моя структура, может быть, вы можете увидеть проблему ...

выше сценарий в products.php

http://img695.imageshack.us/i/schermafbeelding2011010kt.png/

0

В your own answer, вы сказали:

Хорошо, проблема (частичный). Я изменил разрешения на productimages ... Но успех процесса требовался 777 разрешения ... Не очень безопасный хотя

Лучший способ решить эту проблему, чтобы изменить владельца каталога для пользователя веб-сервер работает как. Однако для этого потребуется корневой доступ к серверу (или команда sudo), которого вы, скорее всего, не имеете. Так вот обходной путь:

  1. Перепишите свой сценарий, чтобы проверить, если productimages существует и, если нет, то создайте его:

    if(!is_dir('../productimages/')) mkdir('../productimages/', 0755);

  2. Затем удалите каталог productimages. Вы позволите сценарию воссоздать его для вас. Когда это произойдет, пользователь веб-сервера будет владеть скриптом.

  3. Для того, чтобы это произошло, chmod 777 * родительский каталог. Это только временный и позволяет скрипту создавать каталог.

  4. Запустить сценарий. Убедитесь, что он создал каталог productimages. Если это так, chmod 755 верните родительский directoy.

Это должно позволить вам получить необходимые разрешения, а также управлять доступом к каталогу.

+0

Звучит многообещающе ... Но по какой-то причине сценарий не запускается ... Можете ли вы написать немного больше скриптов, пожалуйста? – Michiel

+0

Извините, 'mkdir ('../ productimages /'), 0755)' должно было быть 'mkdir ('../ productimages /', 0755);' – Josh

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