#php #function
#php #функция
Вопрос:
У меня возникли некоторые проблемы с моим PHP-сервером. Большинство функций при запуске выдает одну и ту же ошибку.
Warning: fopen(http://www.ietf.org/rfc/rfc2475.txt) [function.fopen]: failed to open stream:
A connection attempt failed because the connected party did not properly respond after a
period of time, or established connection failed because connected host has failed to respond. D:inetpubvhostscoolfbapps.inhttpdocstestmerger2.php on line 3
Fatal error: Maximum execution time of 30 seconds exceeded in D:inetpubvhostscoolfbapps.inhttpdocstestmerger2.php on line 3
Та же ошибка возникает, когда я использую функции imagecreate, get_image.
Я разговаривал с поставщиками услуг, но они сказали, что я должен сообщить им причину этой ошибки, чтобы они могли ее исправить. Пожалуйста, посмотрите, может ли кто-нибудь понять, какие изменения следует внести в сервер, чтобы удалить эти ошибки.
ИСПОЛЬЗУЕМЫЙ КОД
$ch = curl_init("http://www.gravatar.com/avatar/95111e2f99bb4b277764c76ad9ad3569?s=32amp;d=identiconamp;r=PG");
$fp = fopen("http://www.ietf.org/rfc/rfc2475.txt", "r");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
Комментарии:
1. Вам нужно взглянуть на
in --
области. Разместите код здесь
Ответ №1:
Извините за это, но я пока не могу комментировать. Вам необходимо опубликовать код, который вызывает эти ошибки. Вы явно запрашиваете этот URL?
Чтобы отладить это, вы должны войти на сервер и попытаться запросить файл, чтобы узнать, действительно ли вы можете иметь исходящие соединения через порт 80. Чтобы сделать это на сервере Linux, просто запустите
wget http://www.ietf.org/rfc/rfc2475.txt
.. и посмотрите, произойдет сбой или нет. Если это происходит, вам нужно поговорить с вашим хостинг-провайдером / ISP.
Если у вас нет доступа к серверу, вы могли бы просто попробовать (на PHP):
<?php
file_get_contents('http://www.google.com/'); // Google so that it's not the same URL
?>
Если есть ошибка, такая же, как указано выше.
Комментарии:
1. Я уже пробовал это. file_get_contents выдает ту же ошибку. Пожалуйста, посмотрите код, который я только что обновил
2. Если это не работает (даже с Google?), то это определенно проблема с хостингом.
3. да, выдает ту же ошибку с Google. Теперь, что я должен сказать поставщикам услуг? Они сказали мне сказать, в чем проблема. я уже сказал им, что эти функции не работают.
4. Функции и сам PHP работают нормально, вам нужно сообщить им, что вы не можете подключиться к внешним HTTP-серверам. Приведите им пример
file_get_contents('http://www.google.com/');
, если они не знают, в чем проблема, я бы подумал о смене провайдера.5. они сказали, что не разрешают исходящие соединения на порту 80. я использую хостинг Windows..
Ответ №2:
Первая ошибка (ошибка fopen ()) вызвана из-за тайм-аута в ответе сервера, с которого вы пытаетесь загрузить данные. т.е. серверу требуется слишком много времени для ответа, поэтому время ожидания соединения истекает.
Вторая ошибка заключается в том, что скрипт выполняется слишком долго. В PHP есть настройка max_execution_time, чтобы скрипт не мог использовать все ресурсы на сервере. На вашем сервере установлена настройка, позволяющая выполнять 30 секунд, иначе функция die() выдаст неустранимую ошибку.
Ответ №3:
Кажется, ваш сервер не может подключиться к этим сайтам. Возможно, вашему серверу не разрешено запускать исходящие соединения или он каким-то образом блокирует исходящий HTTP-трафик?
Бьюсь об заклад, это не проблема PHP, а связано с подключением к вашему серверу. Если у вас есть доступ по SSH, попробуйте открыть эти URL-адреса из командной строки без PHP.