現在の位置: ホーム> 最新記事一覧> ftp_mkdirの許可問題を解決したディレクトリの作成に失敗しました

ftp_mkdirの許可問題を解決したディレクトリの作成に失敗しました

gitbox 2025-05-31

問題の説明

次のコードを使用してディレクトリを作成しようとしているとします。

<code> $ ftp_server = "ftp.gitbox.net"; $ ftp_user = "your_username"; $ ftp_pass = "your_password";

$ conn_id = ftp_connect($ ftp_server);
$ login_result = ftp_login($ conn_id、$ ftp_user、$ ftp_pass);

if(ftp_mkdir($ conn_id、 "/public_html/uploads/newdir")){
エコー「カタログの作成が成功しました!」;
} それ以外 {
エコー「カタログの作成が失敗しました。 ";
}

ftp_close($ conn_id);
</code>

実行後、出力は「カタログの作成に失敗しました」。現時点では、パスの問題、接続の問題、または他の何かであるかどうかわからないと感じるかもしれません。


一般的な原因分析

1。アクセス許可が不十分です

FTPユーザーがターゲットディレクトリに書き込み権限を持っていない最も一般的な理由。たとえば、FTPユーザーが/public_html/uploadsに制限されている場合、および上位ディレクトリにフォルダーを作成しようとすると、この操作は自然に失敗します。

2。ターゲットパスには中間ディレクトリがありません

FTPは、中間ディレクトリを自動的に作成しません。パスが/public_html/uploads/newDir/テストであるが、 NewDirがまだ存在しない場合、実行は失敗します。

3。パッシブモードと接続方法の問題

一部のサーバーでは、有効にするにはパッシブモードが必要です。有効になっていない場合、トランスミッションチャネルの確立が成功したため、一部の操作が失敗する可能性があります。

<code> //パッシブモードFTP_PASVを有効にする($ conn_id、true); </code>

解決

方法1:FTPユーザー許可を確認して変更します

ホストコントロールパネル(CPANELなど)にログインして、FTPユーザーがターゲットディレクトリに許可を書き込むかどうかを確認します。そうでない場合は、FTPアカウント設定でホームディレクトリを調整するか、より高い権限を与える必要があります。

仮想ホストを使用している場合は、アクセス許可を変更できない場合があり、現時点ではホストサービスプロバイダーに連絡する必要があります。


方法2:ディレクトリを段階的に作成します

中級のディレクトリが存在しないための障害を回避するために、ディレクトリを段階的にループで作成できます。

<code> function ftp_mksubdirs($ ftp_stream、$ base_dir、$ target_dir){$ dir = exploit( '/'、$ target_dir); $ path = $ base_dir; foreach($ dir as $ dir){if(!$ dir)継続; $ path。= "/$ dir"; if(!@ftp_chdir($ ftp_stream、$ path)){if(!@ftp_mkdir($ ftp_stream、$ path)){return false; }}} return true; }

$ ftp_server = "ftp.gitbox.net";
$ ftp_user = "your_username";
$ ftp_pass = "your_password";

$ conn_id = ftp_connect($ ftp_server);
$ login_result = ftp_login($ conn_id、$ ftp_user、$ ftp_pass);
ftp_pasv($ conn_id、true);

$ base = "/public_html";
$ target = "uploads/newdir/test";

if(ftp_mksubdirs($ conn_id、$ base、$ target)){
エコー「ディレクトリ構造は正常に作成されました。」;
} それ以外 {
エコー「カタログの作成が失敗しました。許可を確認してください。 ";
}

ftp_close($ conn_id);
</code>

このアプローチにより、必要なディレクトリ構造がリモートFTPで再帰的に作成されることが保証されます。


方法3:許可テストにFTP_CHDIRを使用します

ディレクトリを作成する前に、ftp_chdir()を試してターゲットディレクトリを入力できます。失敗した場合、アクセス許可が不十分であるか、パスが間違っている可能性があります。

<code> if(@ftp_chdir($ conn_id、 "/public_html/uploads")){echo "ディレクトリにアクセスできます。"; } else {echo "ディレクトリアクセスに失敗した場合、許可の問題になる可能性があります。"; } </code>

この手順は、ディレクトリを入力する許可があるかどうかをすばやく判断するのに役立ちます。