MAMP: локальная среда ... подключение к ftp не будет работать? - PullRequest
1 голос
/ 15 июля 2010

Я люблю работать с мампом (у меня есть про версия).В настоящее время я пытаюсь подключиться к FTP-серверу и перечислить файлы там.однако соединение установлено, но файлы не отображаются.

$contents = ftp_nlist($conn_id, $path);

возвращает bool (false)

, однако скрипт работает, если я запускаю его на своем реальном веб-сервере.Есть ли какие-то предпочтения, которые я должен установить, чтобы заставить его работать локально?

regards

Ответы [ 3 ]

0 голосов
/ 15 июля 2010

ftp_nlist() может иногда возвращать false, если вы находитесь за брандмауэром. Попробуйте включить пассивный режим с помощью ftp_pasv() сразу после аутентификации, например:

$conn_id = ftp_connect($server_ip);
$login_result = ftp_login($conn_id, $username, $password);
ftp_pasv($conn_id, true);
$contents = ftp_nlist($conn_id, $path);
0 голосов
/ 27 октября 2011

Я нашел проблему, которая решает эту проблему. Если вы загружаете свой Mac в 32-битном режиме, похоже, он работает. Чтобы загрузить 32-битный режим, при загрузке удерживайте 3 и 2 на клавиатуре. Я могу заставить эту функцию работать.

РЕШЕНИЕ: Я нашел решение для этого.

Чтобы решить, сделайте следующее: добавьте это в скрипт php: var_dump (GETENV (TMPDIR)); выход;

Мой вернул странное местоположение директории tmp или / var / folder

Тогда я сделал: sudo chmod -R 0777 / var / folder

Теперь все работает как положено!

0 голосов
/ 15 июля 2010

У меня есть MAMP, поэтому я провел небольшое тестирование, используя первый пример на странице руководства php для ftp_nlist, и получил ту же ошибку, что и вы (bool(false)).Оказывается, если использовать этот код:

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// get contents of the current directory
$contents = ftp_nlist($conn_id, ".");

// output $contents
var_dump($contents);

и вход в систему не удастся из-за неверного имени пользователя или пароля, если произойдет сбой с сообщением bool(false).

Лучше сделать что-то, что даст вам лучшую информацию о том, где произошел сбой (если произойдет сбой):

// set up basic connection variables
$ftp_server='127.0.0.1';
$ftp_user_name='user';
$ftp_user_pass='pass';

//initiate connection
$conn_id = ftp_connect($ftp_server);


// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass) or die ('login failed');

// get contents of the current directory
$contents = ftp_nlist($conn_id, ".") or die ('could not get contents');

// output $contents
var_dump($contents);

Я протестировал это, и оно работает.При наличии правильных учетных данных, он войдет в систему и сбросит каталог.Если учетные данные неверны, он будет die с сообщением «сбой входа в систему».Если путь неверен, он будет die с сообщением «не удалось получить содержимое»;так что, по крайней мере, если он сломается, у вас будет лучшее представление о том, где.

HTH

...