Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Ошибка PHP

Статус пользователя WenD1
сообщение 8.8.2016, 19:27
Сообщение #1
Стаж: 12 лет

Сообщений: 27
Благодарностей: 1
Полезность: 30

При загрузке файла, выдает такую ошибку, как исправить это?

Код
Warning: copy() [function.copy]: open_basedir restriction in effect. File() is not within the allowed path(s): (/var/www/p11111/data:.) in/var/www/p1111/data/www/site.ru/uploader.phpon line 19
Файл не загружен. Повторите попытку



Вот сам код uploader.php

Код
<?php
session_start();

define( 'ROOT', 'http://'.$_SERVER['HTTP_HOST'] );
define( 'ROOT_DIR', $_SERVER['DOCUMENT_ROOT'] );

include_once ROOT_DIR . '/engine/config.php';
include_once ROOT_DIR . '/engine/func.php';

if(session_id() != $_POST['sid']) die('Access_denied');

$ext = substr($_FILES['upl_file']['name'], 1 + strrpos($_FILES['upl_file']['name'], "."));
$ext = strtolower($ext);
$nam = $_FILES['upl_file']['name'];
$valid_ext = array('rar','zip'); // допустимые расширения
if(in_array($ext, $valid_ext)){
    $filename = time().'.'.$ext; // переименовываем файлик
    $path_file = $_SERVER['DOCUMENT_ROOT'].'/upload/'.$filename;
    if(!copy($_FILES['upl_file']['tmp_name'], $path_file)){
        echo 'Файл не загружен. Повторите попытку';
    }else{

       $fil = 'http://dgoods.ru/upload/'.$nam;

       $razm = get_filesize (''.$path_file.'');
       $pdo->Query("INSERT INTO `php_upload` VALUES('', '" . $_SESSION['tov'] . "', '" . $_SESSION['id'] . "', '".pass_hash($filename)."', '".$filename."', '$nam', '$razm')");
       $pdo->Query("UPDATE `php_tovar` SET `moder` = '2' WHERE `id` = '" . $_SESSION['tov'] . "'");
       $pdo->Query("UPDATE `php_user` SET `reyt` = `reyt` + '0.05' WHERE `id` = '" . $_SESSION['id'] . "'");
       echo "<br /><div align='center'><font color='green'>Файл успешно загружен.</font></div>";
       unset ( $_SESSION["tov"] );

       include_once ROOT_DIR . '/engine/libmail.php';
       $sqlqs = $pdo->Query("SELECT * FROM `php_engine` WHERE `id` = '1'");
       $refdata = $sqlqs->Fetch();
       $smtp_port = $refdata['smtp_port'];
       $port = $refdata['port'];
       $smtp_email = $refdata['smtp_email'];
       $password = $refdata['password'];

        $messag = '
                         <html>
                         <head>
                         <title>Новый товар на модерации</title>
                         <style type="text/css">
                         html, body {
                         margin:0;
                         margin-left:5px;
                         padding:0;
                         font-size:12px;
                         }
                         p {
                         margin:0;
                         padding:3px;
                         }
                         </style>
                         </head>
                         <body>
                         <p>В магазине  добавлен новый товар</b>.</p>
                         </html>';

                         $m = new Mail;
                         $m->From( 'Новый товар на модерации;' . $smtp_email ); // от кого отправляется почта
                         $m->To( 'support@.ru' ); // кому адресованно
                         $m->Subject( 'Новый товар на модерации ' . $_SERVER["HTTP_HOST"] );
                         $m->Body( $messag );
                        //$m->Cc( "copy@asd.com"); // копия письма отправится по этому адресу
                        //$m->Bcc( "bcopy@asd.com"); // скрытая копия отправится по этому адресу
                         $m->Priority( 3 ); // приоритет письма
                        //$m->Attach( "asd.gif","", "image/gif" ); // прикрепленный файл
                         $m->smtp_on( $smtp_port, $smtp_email, $password, $port ); // если указана эта команда, отправка пойдет через SMTP
                         $m->Send(); // а теперь пошла отправка

       ?><script>  setTimeout( "location='/my';", 2000 ); </script><?
    }
}else{
    echo 'Недопустимый формат файла.';
}
?>


Отредактировал: WenD1, - 8.8.2016, 19:27
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя onotole
сообщение 8.8.2016, 20:51
Сообщение #2


Иконка группы

Стаж: 13 лет

Сообщений: 1572
Благодарностей: 1119
Полезность: 1550

Меценат Меценат

https://yandex.ru/yandsearch?win=101&cl...nt=1470682302.1
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя MarVal
сообщение 9.8.2016, 1:17
Сообщение #3


Стаж: 12 лет

Сообщений: 197
Благодарностей: 54
Полезность: 73

У вас как минимум, пути разные при предупреждении выдает:
Warning: copy() [function.copy]: open_basedir restriction in effect. File() is not within the allowed path(s): (/var/www/p11111/data:.) in/var/www/p1111/data/www/site.ru/uploader.phpon line 19
Файл не загружен. Повторите попытку

Отредактировал: MarVal, - 9.8.2016, 1:18
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
nekosoku
сообщение 9.8.2016, 1:40
Сообщение #4
Стаж: 9 лет

Сообщений: 171
Благодарностей: 52
Полезность: < 0

MarVal, потому что проблема заключается в другом и пути здесь ни при чем.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя onotole
сообщение 9.8.2016, 8:58
Сообщение #5


Иконка группы

Стаж: 13 лет

Сообщений: 1572
Благодарностей: 1119
Полезность: 1550

Меценат Меценат

Цитата(MarVal @ 9.8.2016, 2:17) *
У вас как минимум, пути разные при предупреждении выдает:
Warning: copy() [function.copy]: open_basedir restriction in effect. File() is not within the allowed path(s): (/var/www/p11111/data:.) in/var/www/p1111/data/www/site.ru/uploader.phpon line 19
Файл не загружен. Повторите попытку

автор просто сам исправил в выводе имя папки
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Orty_Hart
сообщение 9.8.2016, 19:26
Сообщение #6
Стаж: 14 лет

Сообщений: 1399
Благодарностей: 408
Полезность: 725

Автора, почитай эту ссылку.
http://www.php.su/phphttp/?uploads

Попробуй сделать простой скрипт (просто возьми по ссылке), и попробуй загрузить свой файл. Результаты эксперимента опиши тут.

И проверь эту информацию.
Цитата
Прежде, чем приступить к написанию скрипта обработки multipart-формы, нужно отредактировать файл конфигурации php.ini, чтобы разрешить загрузку файлов на сервер.

Конфигурационный файл PHP php.ini имеет три параметра, связанные с загрузкой файлов на сервер:

file_uploads=On - разрешает загрузку файлов на сервер по протоколу HTTP;
upload_tmp_dir=/tmp - устанавливает каталог для временного хранения загруженных файлов;
upload_max_filesize=2M - устанавливает максимальный объем загружаемых файлов.


И маленький вопрос, этот скрипт тестируется на хостинге? Проверь права папки. Нужно чтоб было 0777

Отредактировал: Orty_Hart, - 9.8.2016, 19:28
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя WenD1
сообщение 9.8.2016, 19:28
Сообщение #7
Стаж: 12 лет

Сообщений: 27
Благодарностей: 1
Полезность: 30

все решил можно закрывать в php.ini нужно было разрешить доступ к папке upload open_basedir = /var/www/p111111/data/www/site.ru/.upload
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: