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

Форум PHP

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

 

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

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

тема: Как по ftp получать исходник файла?
 
 автор: Shorr Kan   (07.10.2005 в 11:45)   письмо автору
 
 

Я коннекчусь, делаю file_get_contents("dir/subdir/file.php");
но в ответ - failed to open stream: No such file or directory , хотя он еще как such там... Я его сам загрузил.

   
 
 автор: XPraptor   (07.10.2005 в 12:05)   письмо автору
 
   для: Shorr Kan   (07.10.2005 в 11:45)
 

Я так понял скрипт работает у тебя на компе, а конектишся ты на удаленый сервак?
Тут должны стоять разрешения на использование таких функций с удаленных серверов, посмотри настройку апача на удаленном сервере, включена ли опция, я не помню как она называется, но в справке по PHP ее легко найдешь.
Да и сомнения на счет FTP у меня возникают, может данная функция вообще не сможет по FTP такое сделать, а может я и ошибаюсь.

   
 
 автор: Shorr Kan   (07.10.2005 в 12:16)   письмо автору
 
   для: XPraptor   (07.10.2005 в 12:05)
 

'--enable-ftp'
Есть такое... так что разрешено.
Данная функция не может по фтп читать? Ну а как тогда по фтп можно прочитать исходник? Не качать же файл...

   
 
 автор: XPraptor   (07.10.2005 в 12:18)   письмо автору
 
   для: Shorr Kan   (07.10.2005 в 12:16)
 

Может и качать, надо глянуть в мануале что там про эту функцию написано, и что пр фтп есть.
Щас займусь.

   
 
 автор: XPraptor   (07.10.2005 в 12:35)   письмо автору
 
   для: Shorr Kan   (07.10.2005 в 12:16)
 

Да можно по фтп работать данными функциями (fopen, file_get_content).Опция allow_url_fopen должно стоять в True в апаче.
В 4.0.3 и более ранних версиях пхп при сборке необходимо использовать опцию --enable-url-fopen-wrapper для активации возможности работать с удаленными файлами.
Так вот в примере:
fopen("ftp://user:password@example.com/somefile.php", "r")

Пишут что нельзя по фтп писать существующие файлы, но открывать можно.

   
 
 автор: Sfinks   (07.10.2005 в 12:33)   письмо автору
 
   для: Shorr Kan   (07.10.2005 в 11:45)
 

<?php
  $host 
"ftp.host.ru";
  
$ip = @gethostbyname($host);
  if(
$ip == $host) exit("Сервер <b>$host</b> НЕ найден.");
  else
  { echo
"Соединение с <b>$host</b> ($ip)..."flush();
    
$ftp = @ftp_connect($ip);
    if (!
$ftp) exit(" Ошибка соединения!");
    else echo
" Соединение установлено.<br>";
    echo
"Авторизация <b>$host</b>..."flush();
    
$user "user";
    
$pass "password";
    if(!@
ftp_login($ftp,$user,$pass)) { echo" Авторизация не удалась<br>";
                                        echo
"Выход <b>$host</b>..."flush();
                                        @
ftp_quit($ftp);
                                        exit(
" Соединение закрыто."); flush();
                                      }
    else echo
" ОK!<br>"flush();
    echo
"Переход в <b>folder/where/file/exists</b>..."flush();
    if(@
ftp_chdir($ftp,"folder/where/file/exists"))
      echo
" OK<br>";
    else exit(
"<b>ОШИБКА!!!</b><br>");
    
flush();
    if(@
ftp_get($ftp,"file.tmp","file.php",FTP_BINARY) ||
       @
ftp_get($ftp,"file.tmp","file.php",FTP_ASCII))
    { 
$fd fopen("file.tmp","r");
      
$source fread($fd,filesize("file.tmp"));
      
fclose($fd);
      
unlink("file.tmp");
      
// содержимое "file.php" в переменной $source
    
}
    
ftp_quit($ftp);
  }
?>

   
 
 автор: Shorr Kan   (07.10.2005 в 12:40)   письмо автору
 
   для: Sfinks   (07.10.2005 в 12:33)
 

Тогда вопрос - при подобном хватании файла - с одного и того же сервера (то есть, и скрипт загружающий файл, и сам файл - лежат на одном сервере) - траффик (brandwitch) считается?

p.s. Неужели без загрузки нет варианта?

   
 
 автор: Sfinks   (07.10.2005 в 12:55)   письмо автору
 
   для: Shorr Kan   (07.10.2005 в 12:40)
 

АХЕЗ =)
Ток вопрос возникает, если файл на том же хосте, от зачем его читать по фтп? Открывай простым fopen(), только путь указывай относительный, тогда пхп-файл прочтется но не выполнится, т.е. ты и получишь его содержимое.

   
 
 автор: Shorr Kan   (07.10.2005 в 13:05)   письмо автору
 
   для: Sfinks   (07.10.2005 в 12:55)
 

Ну дело в том, что "сервер" и "домен" - вещи разные. Физически, hdd один, но пока что админ не смог настроить вселенские права для скриптов в конкретном каталоге - я стараюсь выкрутиться таким макаром...

   
 
 автор: Sfinks   (07.10.2005 в 13:26)   письмо автору
 
   для: Shorr Kan   (07.10.2005 в 13:05)
 

>Ну дело в том, что "сервер" и "домен" -
>вещи разные. Физически, hdd один.
Не понял.... У тебя у одного хостера 2 разных юзера?

   
 
 автор: Shorr Kan   (07.10.2005 в 13:40)   письмо автору
 
   для: Sfinks   (07.10.2005 в 13:26)
 

Ну почти так....

   
 
 автор: Sfinks   (07.10.2005 в 14:03)   письмо автору
 
   для: Shorr Kan   (07.10.2005 в 13:40)
 

Так сохрани читающий файл там, где лежит читаемый.
А если тебе его потом нужно сохранить у второго юзера, то там где лежит читаемый файл залей скрипт, который его будет читать и выдавать через echo, а там где сохранить, залей скрипт, который будет по http обращаться к читающему и, соответственно, получать от него исходник читаемого файла...... Но это не меньше гемора, чем в первом приведенном мной варианте.

   
 
 автор: cheops   (07.10.2005 в 14:46)   письмо автору
 
   для: Shorr Kan   (07.10.2005 в 13:05)
 

Нет обходить это через FTP плохая идея... FTP - достаточно капризная штука и везде разная - лучше потратте эти усилия на тряску хостера.

   
 
 автор: Shorr Kan   (07.10.2005 в 14:50)   письмо автору
 
   для: cheops   (07.10.2005 в 14:46)
 

Это хорошая мысль. Он заслужил.

   
Rambler's Top100
вверх

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