| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Доступ к файлам по URL |
| Автор: Hint 17.2.2009, 20:58 | ||
Пытаюсь подключить удаленный файл, получаю вот такую ошибку:
Пытался использовать и другие функции (file, file_get_contents), результат один: "permission denied". Самое интересное, что если указать порт 80 (или вообще явно его не указывать), то никаких ошибок нет - все работает нормально. Порт (58765) доступен, спокойно открываю URL в браузере. Проверил telnet'ом (с веб-сервера через ssh) - соединение устанавливается. Скрипт завершает работу с ошибой "permission denied" моментально, т.е. безо всякого таймаута. PHP 5.2.8 подключен как модуль к Apache/2.2.3 (CentOS). |
| Автор: skyboy 17.2.2009, 22:39 |
| если коротко: функции типа file_get_contents и fopen - функции для работы с локальными файлами. с удаленными файлами эти функции работают при помощи посредников-оберток(http://ua2.php.net/wrappers). Обертка для HTTP мало того, что может не быть включена в конфигурации хостинга, так ещё и http://ua2.php.net/manual/ru/wrappers.http.php адрес с указанием порта. выход: либо работать через сокеты напрямую, либо работать через cUrl, который работает через сокеты. |
| Автор: Hint 18.2.2009, 10:55 |
| Сайт работает на выделенном сервере. Установлена CentOS. Httpd, php и другие модули ставились через yum. Возможно, дело в ОС. Не первый раз ставлю с нуля LAMP, но обычно работал с FreeBSD и FedoraCore. С такой проблемой столкнулся впервые. В какую сторону копать? >не принимает адрес с указанием порта Если указать 80 порт, то ошибка не возникает. Но проблема в том, что необходимо обращаться по другому порту. Хочу разобраться в чем дело, а не обойти стороной. |
| Автор: Hint 18.2.2009, 11:20 |
| Кстати, проблема какая-то глобальная. Memcache->connect выдает такую же ошибку: "permission denied", хотя по telnet соединение на 11211 устанавливается. |
| Автор: Hint 25.5.2009, 11:44 |
| До сих пор не смог решить проблему. С smtp аналогино (ошибка при fsockopen): Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.site.ru:25 (Permission denied) in /var/www/site.ru/html/sock.php on line 2 telnet опять же работает, а если указать порт 80, то и php соединяется. |
| Автор: Atlete 25.5.2009, 12:12 |
| Попробуйте копать в сторону фаервола. Другого объяснения сложно придумать. Ради чистоты эксперемента отключите полностью фаервол и попробуйте выполнить необходимые операции. P.S. Хотя меня смущает возможность подключения по телнету. Фаервол обычно если блокирует, то и телнетом не подключишься. |
| Автор: Hint 25.5.2009, 12:23 |
| Решилось вводом команды: setsebool -P httpd_can_network_connect=1 |