2014-02-16 5 views
0

Я пытался подключиться через FTP к моему серверу в течение некоторого времени и, похоже, не может заставить его работать.Почему PHP ftp_connect терпит неудачу при запуске сервера?

$connection_id = ftp_connect("example.com", 22); 

При выполнении этого кода, он зависает на некоторое время, пока в конце концов PHP не говорит мне, что сценарий был выполнение слишком долго, и завершает работу. Он не подводит и возвращает FALSE. Это просто время.

Мой первый инстинкт заключался в том, что, возможно, сервер был выключен, поэтому я его обманул. Пинг прошел успешно, и я не потерял никаких пакетов. Затем я попытался использовать параметры для подключения к Filezilla, и он смог подключиться к. Я также могу использовать SSH на сервере. Я даже пытался продлить время выполнения PHP позволяет скрипту, но он всегда зависает и уходит.

Так что пень меня, что если все эти методы подключения к серверу работают, то почему функция ftp_connect() не работает?

ПОЯСНЕНИЯ:

Некоторые из вас задавался вопросом, почему я использую порт 22 (SSH-порт) для подключения. Сначала я попробовал порт по умолчанию для FTP (порт 21), но функция ftp_connect() немедленно вернула FALSE, которая, согласно руководству PHP, означала ошибку.

Я также был , неспособный соединиться через Порт 21 с FileZilla. Поэтому я решил использовать порт SFTP, а это порт 22. Это успешно связано с FileZilla.

+0

FTP-серверы обычно находятся в порту 21. Порт 22 обычно является SSH. – Barmar

+0

@Barmar Я отредактировал вопрос, чтобы решить вашу проблему. –

+0

Похоже, сервер не работает на FTP-сервере. Порт 22 не является портом SFTP, это SSH. Возможно, вы думаете о SCP, который выполняет передачу файлов через SSH. Вы не можете использовать для этого FTP-клиент. – Barmar

ответ

1

ftp_connect не предназначен для использования для подключения к SFTP серверам. Проверьте ssh2_sftp, в котором используется другая методология, а затем стандартный FTP.

1

Третий параметр был добавлен к функции, называемой timeout. Попробуйте что-то вроде:

$conn = ftp_connect('site', 22, 360); 
+0

'Я даже пытался продлить время выполнения PHP позволяет скрипту, но он всегда зависает и время от времени.' - Опцион уже пытался это сделать. –

+0

@AmalMurali Есть несколько способов изменить время выполнения (или тайм-аут), он никогда не указывал, какой из них. – julienhaversano

+0

@julienhaversano Спасибо за ваш вклад. Я фактически использовал функцию PHP set_time_limit() в начале моего скрипта, чтобы установить ограничение времени выполнения. Должно ли это иметь существенное значение, чтобы указать его в функции ftp_connect()? –

-1

Возможно, вы можете попробовать использовать адрес «IP», а не целую строку.

+0

Если вы можете выполнить ping имя хоста, изменение его для использования IP-адреса ничего не сделает. –

Смежные вопросы