Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Скачивание файла [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Описание: Не могу скачать файл по ссылке
JustUserR
Отправлено: 07 Июля, 2010 - 16:02:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




culver пишет:
В то же время браузер работает спокойно.
Можно обмануть firewall?
То есть вы пробуете обращаться к соответстующим хостам с одной рабочей станции с помощью браузера и PHP-скрипта - и в первом случае соединение проходит успешно а во втором нет? Можно проверить не используется ли в локальной сети компании свой proxy-сервер через который соединяется браузер - в таком случае и соединения CURL надо запускать через него Также советую вам попробовать огранизовать соединение через fsockopen с указанием конкретного IP-адреса - возьмите заранее IP-адрес какого-нибудь web-сайта и составьте соответствущий запрос на него и посмотрите ошибку - если же такой подход заработает то впоследствии можно определять DNS-имена через консольную утилиту


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
culver
Отправлено: 07 Июля, 2010 - 16:19:24
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Да proxy есть, добавил строку

- выдало ошибку 7 - ошибка доступа к прокси.
Может его не строкой писать?
 
 Top
JustUserR
Отправлено: 08 Июля, 2010 - 01:48:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




culver пишет:
Да proxy есть, добавил строку curl_setopt($ch, CURLOPT_PROXY, "10.103.100.1"); - выдало ошибку 7 - ошибка доступа к прокси. Может его не строкой писать?
Для того чтобы решить проблему доступа к удаленном web-серверу из PHP-скрипта с вашей локальной машины - необходимо иметь максимально-полную диагностическую информацию по инфраструктуре вашей сети Если локальная машина не полностью контролируется вами и на ней имеются firewall-ы и другие сетевые утилиты то ситуация усложняется - иначе однозначно можно сэмулировать работу браузера Будем полагать что локальный firewall если он и присутствует то не запрещает отправку исходящих соединений от PHP-скрипта - в таком случае для успешной работы нужно инициализировать требуемое соединение в точности также как и браузер Хотя proxy-сервер может требовать авторизации на нем и таким образом генерировать ошибку доступа - но скорее всего дело не в этой опции поскольку бы браузер при первом посещении определенного сайта также бы требовал имя пользователя и пароль
Важно заметить что по идее даже при наличии HTTP-proxy браузер сам должен распознавать DNS-имена - хотя бы по тем причинам что адрес proxy также может быть задан доменным именем а также для возможности использовать локальных имен Может быть к примеру такая ситуация когда на вашей локальной машине настроено разграничене прав доступа и процесс PHP не может получить доступ к системной службе DNS-имен - в таком случае полезно проверить значение возвращаемое при запуске консолькой команды nslookup с приведенными ранее параметрами а также попробовать отправить запрос по конкретному IP-адресу
Таким образом судя по приведенным обстоятельствам проблема заключается в запрете исходищих соединений от процесса PHP - это может быть следствием работы локального firewall-а для которого следует добавить соответствующий процесс в список исключений Возможна и более сложная ситуация например в том случае если ваша сеть поддерживает динамическую маршрутизацию типа RIP - и простые сетевые запросы через WAN-шлюз на ней заведомо не работают - но для начала следует рассмотреть более простые варианты и произвести дополнительную указанную диагностику


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
culver
Отправлено: 08 Июля, 2010 - 13:34:40
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




nslookup сервер не находит ни по адресу ни по названию.
Такие вариации:
PHP:
скопировать код в буфер обмена
  1. $ch = curl_init();
  2. //$url = "http://php.su";
  3. $url = "http://77.120.114.209";
  4. curl_setopt($ch, CURLOPT_URL, $url);
  5. //curl_setopt($ch, CURLOPT_PROXY, "193.254.218.135"); #пробовал так
  6. curl_setopt($ch, CURLOPT_PROXY, "10.103.100.1");
  7. curl_setopt($ch, CURLOPT_PORT, 8080);
  8. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1');
  9. $headers = array
  10. (
  11.     'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*;q=0.8',
  12.         'Accept-Language: ru,en-us;q=0.7,en;q=0.3',
  13.         'Accept-Encoding: deflate',
  14.         'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'
  15. );
  16. curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt");  
  17. curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt");
  18. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  19. curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
  20. curl_setopt  ($ch, CURLOPT_HEADER, false);
  21. $htm = curl_exec($ch);
  22. $er = curl_errno ($ch);
  23. if (isset($er))   echo "Ошибка ".$er;

тоже ни к чему не привели.
Локально стоит только KIS 8, его отключение не помогло.
Куда дальше копать - не знаю.
 
 Top
JustUserR
Отправлено: 09 Июля, 2010 - 02:55:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




culver пишет:
nslookup сервер не находит ни по адресу ни по названию
Видимо локальная сеть с NAT-механизмом в вашей огранизации не настроена или блокируется firewall-ом на соответствующем шлюзе или маршрутизаторах - поэтому нужно искать способ который точно копирует проведение HTTP-запроса как и ваш браузер Таким образом ваша задача продиагностировать работу браузера - для этого во-первых можно сделать запрос на какой-нибудь web-сервер и посмотреть информацию в команде netstat -ab для определения реального сетевого адреса с которым связыватся браузер - во-вторых можно попробовать уточнить какой именно тип proxy-сервера используется в сети поскольку это может быть и обычный HTTP и SOCKS5 - для проверки можно обратиться через telnet по IP-адресу и порту соответствующего proxy и проверить результат соединения
culver пишет:
Локально стоит только KIS 8, его отключение не помогло.
Еще имеется обычный windows firewall который также может блокировать различные соединения и приложение - проверьте чтобы в нем ваш локальный процесс отвечающий за интерпретацию PHP-скриптов находился в списке исключений


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
culver
Отправлено: 09 Июля, 2010 - 13:54:01
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




NAT по видимому стоит на линуксовом шлюзе, через который идёт вся связь с внешним миром. Хотя адрес прокси для выхода браузера в интернет стоит не его, а адрес из подсети вышестоящей организации. При определении адреса через сайты (например 2ip.ru) выводится вообще третий адрес.

netstat -ab показывает *.*

telnet может достучаться только до шлюза, который запароленый.

windows firewall отлючал - не помогает.

Пошол другим путём. Подключился через личный радиомодем (всё равно трафик был ограниченный). Больше копаться не буду.

Всем большое спасибо, особенно JustUserR.
 
 Top
JustUserR
Отправлено: 10 Июля, 2010 - 02:51:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




culver пишет:
NAT по видимому стоит на линуксовом шлюзе, через который идёт вся связь с внешним миром. Хотя адрес прокси для выхода браузера в интернет стоит не его, а адрес из подсети вышестоящей организации. При определении адреса через сайты (например 2ip.ru) выводится вообще третий адрес.
netstat -ab показывает *.*
telnet может достучаться только до шлюза, который запароленый.
windows firewall отлючал - не помогает.
Пошол другим путём. Подключился через личный радиомодем (всё равно трафик был ограниченный). Больше копаться не буду.
Всем большое спасибо, особенно JustUserR.
Пожалуйста! Однако было бы очень интересно решить ваш вопрос до конца - поскольку при определенном изучении инфраструктуры сети он обязательно должен решаться
Можно видеть что вы имеете дело с многоступенчатной сетью - ваш компьютер подключен к локальной сети первого уровня которая не имеет интернет-шлюза и работает с web-сайтами исключетельно через proxy-сервер - при этом браузер настроен таким образом что все HTTP-запросы он безусловно посылает на данный proxy-сервер не проводя их локальный resolve-инг который-то в общем невозможен Сам proxy-сервер находится в другой локальной сети вышестоящей огранизации - которая связана с вашей сетью простой маршрутизацией без NAT-шлюза - и только локальная сеть это огранизации подключена к маршрутизатору на WAN-стороне которого имеется реальный выход в интернет На самом же деле сетевая картина может быть значительно сложнее - и включать к примеру туннельные соединения и динамическую маршрутизацию и например multicast-сервисы
Огранизация в целях проверки доступа к интернету могла установить специальные средства - например синхронизатор между proxy-сервером и firewall-ом с того сервера который пропускает пакеты только при определенных условиях
Тем не менее ваш браузер успешно работает через proxy-сервер но telnet к нему подключиться не может - в таком случае нужно попробовать выйти в интернет через другой свежескачанный браузер с указанием в нем таких же настроек proxy-сервера Если он тоже откажется работать то проблема скорее всего найдена - например в ваш браузер по умолчанию встроен ActiveX-элемент который обменивается информацией с опредеденным сервисом локальной сети и разрешает отсылку Но даже в таком случае можно схитрить ведь PHP имеет набор функций для работы с OLE и Win32API - и вы можете отправлять запросы путем межпроцессного взаимодействия с вашим браузером - набор этих функций можно посмотреть здесь http://www.php.su/functions/?page=cat_int


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB