私はmampで作業するのが大好きです(私はプロ版を持っています)。現在、ftp サーバーに接続して、そこにあるファイルを一覧表示しようとしています。ただし、接続は成功しますが、ファイルは一覧表示されません。
$contents = ftp_nlist($conn_id, $path);
bool(false) を返します
ただし、実際のWebサーバーで実行すると、スクリプトは機能します。ローカルでも機能させるために設定しなければならない設定はありますか?
よろしく
私は 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
これを解決する問題を見つけました。Mac を 32 ビット モードで起動すると、動作しているように見えます。32 ビット モードで起動するには、起動時にキーボードの 3 と 2 を押したままにします。この機能を動作させることができます。
解決策: これに対する解決策を見つけました。
解決するには、次の手順を実行します: これを php スクリプトに追加します: var_dump(getenv(TMPDIR)); 出口;
私は奇妙なtmpディレクトリの場所または/ var/foldersを返しました
それから私はしました: sudo chmod -R 0777 /var/folders
今では期待どおりに動作します!
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);