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

Форум PHP

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

 

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

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

тема: Загрузка файла (через copy)
 
 автор: kasir   (06.09.2006 в 16:40)   письмо автору
 
 

Есть такой PHP-скрипт:

16 $newfile = ' ';
17 $file = '/Users/alex/Sites/hostip_current.sql.gz';
18 $newfile = '/Usres/alex/Sites/copy/hostip_current.sql.gz';
19 if (!copy($file, $newfile))
20 {
21 echo "Не удалось скопировать $file... \n";
22 }

Где переменная $file - это путь откуда я беру сам файл, а $newfile - это куда хочю поместить.
Проверяя этот скрип мне выдаёт такую ошибку:

Warning: copy(/Users/alex/Sites/hostip_current.sql.gz) [function.copy]: failed to open stream: Permission denied in /Users/alex/Sites/sergey/1.php on line 19
Не удалось скопировать /Users/alex/Sites/hostip_current.sql.gz...

Поскажите в чём проблема??

   
 
 автор: ec_stasis   (06.09.2006 в 16:51)   письмо автору
 
   для: kasir   (06.09.2006 в 16:40)
 

Нет прав на чтение из директории /Users/alex/Sites/
Обычно в таких случаях советуют "поставь права 777", но это не безопасно. 444 тоже поможет...

   
 
 автор: kasir   (06.09.2006 в 16:54)   письмо автору
 
   для: ec_stasis   (06.09.2006 в 16:51)
 

а как зделать это право?=)

   
 
 автор: dert   (06.09.2006 в 17:09)   письмо автору
 
   для: kasir   (06.09.2006 в 16:54)
 

Кстати у Вас ошибка в 18 строке! Заместо директории Users у Вас написано Usres
И как я понимаю такой директории Usres у Вас нет и следовательно копирования не будет

   
 
 автор: kasir   (06.09.2006 в 17:11)   письмо автору
 
   для: dert   (06.09.2006 в 17:09)
 

Спасибо за находку. Исправил то что нашли не помогло=(

   
 
 автор: ec_stasis   (06.09.2006 в 17:11)   письмо автору
 
   для: kasir   (06.09.2006 в 16:54)
 

коннектишься ftp-клиентом, например на сервер, жмешь правой кнопкой на этом файле и в "пропертис" ставишь "permissions" 0444. Это если сервер удаленный, а на своем компе - chmod 444 путь/к/директории

   
 
 автор: Trianon   (06.09.2006 в 17:45)   письмо автору
 
   для: ec_stasis   (06.09.2006 в 17:11)
 

Почему Вы считаете, что для создания файла в каталоге, достаточно иметь у этого каталога права на чтение?

   
 
 автор: kasir   (06.09.2006 в 17:49)   письмо автору
 
   для: Trianon   (06.09.2006 в 17:45)
 

А что может быть ещё???

   
 
 автор: Trianon   (06.09.2006 в 17:56)   письмо автору
 
   для: kasir   (06.09.2006 в 17:49)
 

Как минимум еще на запись. Т.е. 666 . Вот только если это каталог, в котором лежат исполняемые скрипты, Вы сделаете себе дыру.

   
 
 автор: kasir   (06.09.2006 в 18:00)   письмо автору
 
   для: Trianon   (06.09.2006 в 17:56)
 

Тоесть в функции chmod ($file, 0777), исправить на 0666?? я так понял вас??

   
 
 автор: Trianon   (06.09.2006 в 18:02)   письмо автору
 
   для: kasir   (06.09.2006 в 18:00)
 

неправильно.
права не на файл.
Права на целевой каталог. На /Users/alex/Sites/copy

   
 
 автор: kasir   (06.09.2006 в 18:08)   письмо автору
 
   для: Trianon   (06.09.2006 в 18:02)
 

Как по моему права на каталог должны стоять автоматом.
Заменил на chmod ("/User/alex/Sites/copy", 0666);, не помогло та же самая ошибка=(
Чтож такое=(

   
 
 автор: Trianon   (06.09.2006 в 18:25)   письмо автору
 
   для: kasir   (06.09.2006 в 18:08)
 

я говорил, что нужно поставить права на каталог, а не писать chmod ("/User/alex/Sites/copy", 0666);,
Эта строка может и не справиться с такой задачей.
Это же не Ваша машина? Используйте FTP-клиент. Меняйте права через него.

   
 
 автор: kasir   (06.09.2006 в 18:47)   письмо автору
 
   для: Trianon   (06.09.2006 в 18:25)
 

В этом извените за грубость, долбаном Макентоше немогу найти как поставить права на каталог=(
Может кто умеет обращатся с Маками помогите!!!!!!!!

   
 
 автор: cheops   (06.09.2006 в 23:09)   письмо автору
 
   для: kasir   (06.09.2006 в 18:47)
 

На маках, особенно на последних где-то в программах точно имеется командная строка. Но людей работающих с маками мало - они дороги и специфичны. У меня была мысль обзавестись маком, чтобы посмотреть на легендарную систему, но я отказался, так как работать на нём вряд ли стал бы, а в железки играться уже не охото. Мы бы с радостью вам помогли, но мы не можем воспроизвести ситуацию и слабо знакомы с маками - они же вроде больше своей графикой славятся и плохо приспособелы для программирования.

   
 
 автор: kasir   (06.09.2006 в 17:08)   письмо автору
 
   для: ec_stasis   (06.09.2006 в 16:51)
 

Непойму куда надо поставить 777 или 444

   
 
 автор: kasir   (06.09.2006 в 17:37)   письмо автору
 
   для: kasir   (06.09.2006 в 17:08)
 

Изменил путь откуда беру файл на как мне кажется точнее $file = '../hostip_current.sql.gz', добавил функцию chmod ($file, 0444);

$newfile = '';
$file = '../hostip_current.sql.gz';
$newfile = '/Users/alex/Sites/copy/hostip_current.sql.gz';
chmod ($file, 0777);
if (!copy($file, $newfile))
{
echo "Не удалось скопировать $file... \n";
}
exit;

И всёравно выдаёт ошибку:

Warning: chmod() [function.chmod]: Operation not permitted in /Users/alex/Sites/sergey/1.php on line 19

Warning: copy(/Users/alex/Sites/copy/hostip_current.sql.gz) [function.copy]: failed to open stream: Permission denied in /Users/alex/Sites/sergey/1.php on line 20
Не удалось скопировать ../hostip_current.sql.gz...

Что не так??=(

   
 
 автор: dert   (06.09.2006 в 17:44)   письмо автору
 
   для: kasir   (06.09.2006 в 17:37)
 

А на каком Вы хостинге размещаетесь, в целях безопасности у многих хостнгах права на директорию на сервере стоят 555? Возможно надо через Shell доступ ставить права 777 на директорию в которую Вы хотите копировать

   
 
 автор: cheops   (06.09.2006 в 23:10)   письмо автору
 
   для: dert   (06.09.2006 в 17:44)
 

У него локальная машина, нужно просто запустить скрипт.

   
 
 автор: cheops   (06.09.2006 в 23:17)   письмо автору
 
   для: kasir   (06.09.2006 в 17:37)
 

Вот так попробуйте
<?php
$newfile 
'';
$file '../hostip_current.sql.gz';
$newfile '/Users/alex/Sites/copy/hostip_current.sql.gz';
chmod ($file0777);
chmod('/Users/alex/Sites/copy/'077);
if (!
copy($file$newfile))
{
echo 
"Не удалось скопировать $file... \n";

exit();
?>


PS Вы при помощи какой программы в маке по директориям перемещаетесь, как она называется?

   
 
 автор: kasir   (07.09.2006 в 12:01)   письмо автору
 
   для: cheops   (06.09.2006 в 23:17)
 

Спасибо большое за помощ. Мы одалели этот скрипт и мой Макентош))

   
Rambler's Top100
вверх

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