Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Warning: copy(../../20100222185751.jpg) [function.copy]: failed to open stream: Permission denied in /home/np21830/domains/basicline.ee/public_html/ki
 
 автор: KuPuJl   (22.02.2010 в 20:02)   письмо автору
 
 

Warning: copy(../../20100222185751.jpg) [function.copy]: failed to open stream: Permission denied in

/admin/photos/addphoto.php on line 32


Права поставил в файле и в папке.. Всё равно ругается. На сервере всё нормально настроенно.


Искал на форуме, читал. но так нечего не помогло...

  Ответить  
 
 автор: t3ma   (22.02.2010 в 20:51)   письмо автору
 
   для: KuPuJl   (22.02.2010 в 20:02)
 

используйте
move_uploaded_file()

  Ответить  
 
 автор: KuPuJl   (22.02.2010 в 21:07)   письмо автору
 
   для: t3ma   (22.02.2010 в 20:51)
 

тоже самое
Warning: move_uploaded_file(../../20100222201128.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in

  Ответить  
 
 автор: Trianon   (22.02.2010 в 21:21)   письмо автору
 
   для: KuPuJl   (22.02.2010 в 21:07)
 

куда-то не туда Вы его пытаетесь перенести...
Не туда, куда скрипту можно носить.

  Ответить  
 
 автор: KuPuJl   (22.02.2010 в 21:28)   письмо автору
 
   для: Trianon   (22.02.2010 в 21:21)
 

Я эти папки files создал 3-ех местах и дал права 777. и всё равно выдаёт такое.

  Ответить  
 
 автор: heed   (22.02.2010 в 21:31)   письмо автору
 
   для: KuPuJl   (22.02.2010 в 21:28)
 

сам вызов функции в файле addphoto.php, а вызывается браузером он или он просто включается каким-нибудь include() ?

  Ответить  
 
 автор: KuPuJl   (22.02.2010 в 21:34)   письмо автору
 
   для: heed   (22.02.2010 в 21:31)
 

Это обработчик. загзуки фотографии. Браузером.

  Ответить  
 
 автор: heed   (22.02.2010 в 21:40)   письмо автору
 
   для: KuPuJl   (22.02.2010 в 21:34)
 

по уму нужно переделывать на copy(files/123456.gif), создавать папку /admin/photos/files , давать права 0777 , но если будет включен safe_mod, то даже тогда если скрипт создаст папку внутри этой папки files, бывает что он не сможет туда записывать, а в саму files запросто

  Ответить  
 
 автор: KuPuJl   (22.02.2010 в 21:42)   письмо автору
 
   для: heed   (22.02.2010 в 21:40)
 

Я не могу понять safe_mode ???? Откуда он берёться? Папка там создана /admin/photos/files. Права дал.

  Ответить  
 
 автор: KuPuJl   (22.02.2010 в 21:47)   письмо автору
 
   для: KuPuJl   (22.02.2010 в 21:42)
 

Safe_mode отключен. Только что проверил.

  Ответить  
 
 автор: heed   (22.02.2010 в 21:56)   письмо автору
 
   для: KuPuJl   (22.02.2010 в 21:47)
 

поставьте в начале ютоло файла такие строки чтобы проверить
<pre><?  
print_r
($stat stat('files'));

printf("%o"$stat['mode']);
exit;
?>

//поправил имя папки

  Ответить  
 
 автор: KuPuJl   (22.02.2010 в 22:08)   письмо автору
 
   для: heed   (22.02.2010 в 21:56)
 


<?  
print_r
($stat stat('files'));

printf("%o"$stat['mode']);
exit;
?>
<?php
  
require_once ("../db.php");
  
// Включаем файл с вспомогательными функцими
  
include ("util.php");
  
// Проверим - достаточно ли информации для занесения в базу данных
  
if(empty($_POST['name'])) links($_POST['id_catalog'], "Отсутствует название фотографии");
  if(empty(
$_POST['pos'])) links($_POST['id_catalog'],  "Не введена позиция фотографии");
  
// Проверяем скрыта или нет фотография
  
if($_POST['hide'] == "on"$showhide "show";
  else 
$showhide "hide";
  
// Заменяем одинарные кавычки обратными
  
$_POST['name'] = str_replace("'""`"$_POST['name']);
  
// Если во временном каталоге имеется соответствующий полю image
  // файл, копируем его из временного каталога в каталог /files
  
if (!empty($_FILES['image']['tmp_name']))
  {
    
// Определяем расширение файла
    
$ext strrchr($_FILES['image']['name'], "."); 
    
// Формируем путь к файлу    
    
$image "files/".date("YmdHis",time())."$ext";
    
$smallimage "files/".date("YmdHis",time())."_s$ext";  
    
// Перемещаем файл из временной директории сервера в
    // директорию /files Web-приложения
    
if (move_uploaded_file($_FILES['image']['tmp_name'], "files/".$image))
    {
      
// Уничтожаем файл во временной директории
      
unlink($_FILES['image']['tmp_name']);
      
// Изменяем права доступа к файлу
      
chmod("files/".$image0777);
    }
  } else 
links($_POST['id_catalog'], "Фотография не передана на сервер");
  
// Вызываем функцию resizeimg(), создающую уменьшенную копию фотографии
  // $image и помещающую её в файл $smallimage
  
if(!resizeimg($image$smallimage133100))
  {
    
links($_POST['id_catalog'],
          
"Ошибка при создании уменьшенной копии изображения с
           помощью библиотеки GDLib"
);
  }
  
// Формируем запрос
  
$query "INSERT INTO photo VALUES (NULL,
                                     '"
.$_POST['name']."',
                                     '
$smallimage',
                                     '
$image',
                                     '
$showhide',
                                     "
.$_POST['pos'].",
                                     "
.$_POST['id_catalog'].")";
  if(
mysql_query($query))
  {
    
// Осуществляем автоматический переход на главную
    // страницу администрирования
    /*echo "<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id_parent=".$_POST['id_catalog']."'>
          </HEAD>";
    */      
  
} else links($_POST['id_catalog'], 
         
"Ошибка при добавлении новой записи в таблицу фотографий");
  
// Небольшая вспомогательная функция для вывода
  // сообщений в окно браузера
  
function links($id_catalog,$msg)
  {
    echo 
"<p>".$msg."</p>";
    echo 
"<p><a href=# onClick='history.back()'>Вернуться к правке фотографии</a></p>";
    echo 
"<p><a href=index.php?id_parent=$id_catalog>Администрирование фотогалереи</a></p>";
    exit();
  }
?> 

так ?

  Ответить  
 
 автор: heed   (22.02.2010 в 22:16)   письмо автору
 
   для: KuPuJl   (22.02.2010 в 22:08)
 

да имел ввиду так
, но тут ошибка

$image = "files/".date("YmdHis",time())."$ext";
и в move_uploaded_file снова второй раз к имени добавляется "files/".

  Ответить  
 
 автор: KuPuJl   (22.02.2010 в 22:19)   письмо автору
 
   для: heed   (22.02.2010 в 22:16)
 





  // Устанавливаем соединение с базой данных
  require_once ("../db.php");
  // Включаем файл с вспомогательными функцими
  include ("util.php");
  // Проверим - достаточно ли информации для занесения в базу данных
  if(empty($_POST['name'])) links($_POST['id_catalog'], "Отсутствует название фотографии");
  if(empty($_POST['pos'])) links($_POST['id_catalog'],  "Не введена позиция фотографии");
  // Проверяем скрыта или нет фотография
  if($_POST['hide'] == "on") $showhide = "show";
  else $showhide = "hide";
  // Заменяем одинарные кавычки обратными
  $_POST['name'] = str_replace("'", "`", $_POST['name']);
  // Если во временном каталоге имеется соответствующий полю image
  // файл, копируем его из временного каталога в каталог /files
  if (!empty($_FILES['image']['tmp_name']))
  {
    // Определяем расширение файла
    $ext = strrchr($_FILES['image']['name'], "."); 
    // Формируем путь к файлу    
    $image = "../".date("YmdHis",time())."$ext";
    $smallimage = "../".date("YmdHis",time())."_s$ext";  
    // Перемещаем файл из временной директории сервера в
    // директорию /files Web-приложения
    if (copy($_FILES['image']['tmp_name'], "../".$image))
    {
      // Уничтожаем файл во временной директории
      unlink($_FILES['image']['tmp_name']);
      // Изменяем права доступа к файлу
      chmod("../".$image, 0777);
    }
  } else links($_POST['id_catalog'], "Фотография не передана на сервер");
  // Вызываем функцию resizeimg(), создающую уменьшенную копию фотографии
  // $image и помещающую её в файл $smallimage
  if(!resizeimg($image, $smallimage, 133, 100))
  {
    links($_POST['id_catalog'],
          "Ошибка при создании уменьшенной копии изображения с
           помощью библиотеки GDLib");
  }






Начально вот так было. переробывал все варинаты.

  Ответить  
 
 автор: heed   (22.02.2010 в 22:30)   письмо автору
 
   для: KuPuJl   (22.02.2010 в 22:08)
 

chmod("files/".$image, 0777);
, на картинки уже изменять права вроде не имеет смысла, их создатель php , и ему права позволяют записывать в них

  Ответить  
 
 автор: KuPuJl   (22.02.2010 в 22:32)   письмо автору
 
   для: heed   (22.02.2010 в 22:30)
 

Это поставил я уже для профилактики.

  Ответить  
 
 автор: Trianon   (22.02.2010 в 23:35)   письмо автору
 
   для: KuPuJl   (22.02.2010 в 22:32)
 

Надо научиться отличать относительные пути от абсолютных.
По совести, этот этап надо было пройти еще до первого знакомства с php

  Ответить  
 
 автор: oliss   (22.02.2010 в 23:42)   письмо автору
 
   для: KuPuJl   (22.02.2010 в 22:08)
 

А зачем это?
if (move_uploaded_file($_FILES['image']['tmp_name'], "files/".$image))

unlink($_FILES['image']['tmp_name']); // Уничтожаем файл во временной директории

  Ответить  
 
 автор: kostiaGt   (22.02.2010 в 23:51)   письмо автору
 
   для: KuPuJl   (22.02.2010 в 22:08)
 

а ваш у вас есть права на использования chmod?

  Ответить  
 
 автор: heed   (22.02.2010 в 21:25)   письмо автору
 
   для: KuPuJl   (22.02.2010 в 21:07)
 

на запрет записи в файл может влиять включен-ли safe_mod
, в open_basedir может указываться дирректория выше которой нельзя открывать файлы
нашёл только такую отписку
>Специальное значение . указывает, что базовой следует считать директорию, в которой расположен сам скрипт. В этом случае следует быть осторожным, так как рабочую директорию скрипта можно легко изменить при помощи функции chdir().

непонятно почему именно в корень сайта скрипт должен записывать файлы

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования