目標は、PHP を使用してサーバーに FTP し、ディレクトリ リストを取得することです。唯一の問題は、ディレクトリにアクセスするために絶対パスを使用する必要があることです。
例:
$host = "example.com";
$port = 21;
$connection = ftp_connect($host, $port);
ftp_login($connection, "userA", "password");
ftp_pasv($connection, true);
//user's home directory is /home/userA
print_r( ftp_nlist($connection, "logs")); //works as intended
print_r( ftp_nlist($connection, "/home/userA/logs")); //does not work
本当に紛らわしい部分は、ファイルシステム関数を ftp URL で使用すると、正反対の問題が発生することです。
opendir("ftp://userA:password@example.com:21/home/userA/logs"); //works
opendir("ftp://userA:password@example.com:21/logs"); //does not work
ユーザー/ディレクトリはユーザーによって入力されるため、ユーザーが絶対パスまたは相対 (ホーム ディレクトリ) パスを使用するかどうかは必ずしもわかりません。単純な strstr を使用して、パスの最初の文字が「/」であるかどうかを確認し、使用する方法を選択することもできますが、2 倍のコードを書くことになります。
絶対パスと相対パスの両方で機能するメソッドを取得する簡単な方法が必要です。私が見落としているのは単純なことだと思っています。
ありがとう