У меня есть простой скрипт php на сервере, который использует fsockopen для подключения к серверу.
<?php
$fp = fsockopen("smtp.gmail.com", 25, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
echo fgets($fp, 1024);
fclose($fp);
}
?>
Проблема в том, что время ожидания сценария истекло и он не может подключиться. Если я изменить порт с 25 на 80, например, он работает без проблем на любом хосте. Таким образом, проблема, похоже, заключается только в порте 25, независимо от того, какой хост я использую, я перепробовал многие из них, и все они работают для порта 80 и других, но для 25 не удается.
Соединения не блокируются брандмауэром, как если бы я telnet из оболочки, он успешно подключается к любому порту на любом хосте.
Есть идеи, в чем может быть проблема, ведь это действительно странно?
LE: Если я запускаю тот же php-скрипт из оболочки, php scriptname.php, он работает так, что только когда я запускаю его по http, это не получается. У меня есть Apache с SuPHP, так что проблема где-то здесь