Aktueller Standort: Startseite> Neueste Artikel> Lösen Sie die Erlaubnisausgabe von FTP_MKDIR

Lösen Sie die Erlaubnisausgabe von FTP_MKDIR

gitbox 2025-05-31

Problembeschreibung

Angenommen, Sie versuchen, ein Verzeichnis mit dem folgenden Code zu erstellen:

<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")) {
Echo "Katalogerstellung erfolgreich!";
} anders {
Echo "Katalogerstellung fehlgeschlagen";
}

ftp_close ($ conn_id);
</code>

Nach der Ausführung ist die Ausgabe "Katalogerstellung fehlgeschlagen". Zu diesem Zeitpunkt haben Sie möglicherweise das Gefühl, dass Sie keine Ahnung haben, ob es sich um ein Pfadproblem, ein Verbindungsproblem oder etwas anderes handelt.


Gemeinsame Ursache Analyse

1. Unzureichende Berechtigungen

Der häufigste Grund, warum FTP -Benutzer keine Berechtigungen in das Zielverzeichnis haben. Wenn ein FTP -Benutzer beispielsweise auf /public_html/uploads/ beschränkt ist und Sie versuchen, einen Ordner in seinem oberen Verzeichnis zu erstellen, fehlschlägt dieser Vorgang natürlich.

2. Der Zielpfad hat kein Zwischenverzeichnis

FTP erstellt nicht automatisch Zwischenverzeichnisse. Wenn Ihr Pfad /public_html/uploads/newdir/test ist, aber es gibt noch nicht Newdir , dann wird die Ausführung fehlschlagen.

3. Passive Modus- und Verbindungsmethodenprobleme

Einige Server müssen den passiven Modus aktivieren. Wenn nicht aktiviert, können einige Vorgänge aufgrund der erfolgreichen Einrichtung des Übertragungskanals scheitern.

<Code> // Passiver Modus ftp_pasv ($ conn_id, true) aktivieren; </code>

Lösung

Methode 1: Überprüfen und ändern Sie die FTP -Benutzerberechtigungen

Melden Sie sich in Ihrem Host -Kontrollpanel (z. B. CPANEL) an, um zu bestätigen, ob der FTP -Benutzer Berechtigungen in das Zielverzeichnis hat. Wenn nicht, muss es sein Heimverzeichnis anpassen oder höhere Berechtigungen in den Einstellungen für das FTP -Konto erteilt.

Wenn Sie einen virtuellen Host verwenden, können Sie die Berechtigungen möglicherweise nicht ändern, und müssen den Host -Service -Anbieter zu diesem Zeitpunkt kontaktieren.


Methode 2: Erstellen Sie Schritt für Schritt einen Verzeichnis

Um Misserfolge aufgrund der Nichteinhaltung von Zwischenverzeichnissen zu vermeiden, können Sie die Verzeichnisse Schritt für Schritt durch die Schleife erstellen:

<Code> Funktion ftp_mksubdirs ($ ftp_stream, $ base_dir, $ target_dir) {$ dire = exploit ('/', $ target_dir); $ path = $ base_dir; foreach ($ dir $ $ dire) {if (! $ dir) Fortsetzung; $ 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)) {
echo "Die Verzeichnisstruktur wurde erfolgreich erstellt.";
} anders {
Echo "Katalogerstellung fehlgeschlagen, bitte prüfen Sie die Berechtigungen.";
}

ftp_close ($ conn_id);
</code>

Dieser Ansatz stellt sicher, dass die erforderliche Verzeichnisstruktur rekursiv auf Remote -FTP erstellt wird.


Methode 3: Verwenden Sie FTP_Chdir für Berechtigungstests

Sie können ftp_chdir () versuchen, das Zielverzeichnis einzugeben, bevor Sie das Verzeichnis erstellen. Wenn es fehlschlägt, kann es sein, dass die Berechtigungen möglicherweise unzureichend sein oder der Pfad falsch ist:

<Code> if (@ftp_chdir ($ conn_id, "/public_html/uploads")) {echo "ist zugänglich."; } else {echo "Verzeichniszugriff fehlgeschlagen, es kann ein Erlaubnisproblem sein."; } </code>

Dieser Schritt hilft schnell zu bestimmen, ob Sie die Erlaubnis haben, das Verzeichnis einzugeben.