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.
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.
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.
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>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.
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.
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.