Supposons que vous essayez de créer un répertoire en utilisant le code suivant:
<code> $ ftp_server = "ftp.gitbox.net"; $ ftp_user = "Votre_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 "La création du catalogue a réussi!";
} autre {
Écho "La création de catalogue a échoué.";
}
ftp_close ($ Conn_id);
</code>
Après l'exécution, la sortie est "la création de catalogue a échoué". Pour le moment, vous pouvez penser que vous ne savez pas s'il s'agit d'un problème de chemin, d'un problème de connexion ou autre chose.
La raison la plus courante pour laquelle les utilisateurs FTP n'ont pas d'autorisations d'écriture sur le répertoire cible. Par exemple, si un utilisateur FTP est limité à / public_html / uploads / et que vous essayez de créer un dossier dans son répertoire supérieur, cette opération échouera naturellement.
FTP ne crée pas automatiquement des répertoires intermédiaires. Si votre chemin est / public_html / uploads / newdir / test mais que newdir n'existe pas encore, l'exécution échouera.
Certains serveurs nécessitent l'activation du mode passif. S'il n'est pas activé, certaines opérations peuvent échouer en raison de l'établissement réussi du canal de transmission.
<code> // Activer le mode passif ftp_pasv ($ Conn_id, true); </code>Connectez-vous à votre panneau de configuration d'hôte (comme CPanel) pour confirmer si l'utilisateur FTP a des autorisations d'écriture au répertoire cible. Sinon, il doit ajuster son répertoire domestique ou donner des autorisations plus élevées dans les paramètres du compte FTP.
Si vous utilisez un hôte virtuel, vous ne pourrez peut-être pas modifier les autorisations et vous devez contacter le fournisseur de services hôte pour le moment.
Afin d'éviter les échecs en raison de la non-existence des répertoires intermédiaires, vous pouvez créer des répertoires étape par étape: boucle:
<code> Fonction ftp_mksubdirs ($ ftp_stream, $ base_dir, $ cible_dir) {$ dir = exploit ('/', $ cible_dir); $ path = $ base_dir; foreach ($ dir as $ dir) {if (! $ dir) continuer; $ 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 = "Votre_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";
$ cible = "uploads / newdir / test";
if (ftp_mksubdirs ($ Conn_id, $ base, $ cible)) {
écho "La structure du répertoire a été créée avec succès.";
} autre {
Écho "La création de catalogue a échoué, veuillez vérifier les autorisations.";
}
ftp_close ($ Conn_id);
</code>
Cette approche garantit que la structure du répertoire requise est créée de manière récursive sur FTP distant.
Vous pouvez essayer ftp_chdir () pour entrer le répertoire cible avant de créer le répertoire. S'il échoue, il se peut que les autorisations puissent être insuffisantes ou que le chemin est mauvais:
<code> if (@ftp_chdir ($ Conn_id, "/ public_html / uploads")) {echo "Le répertoire est accessible."; } else {echo "L'accès du répertoire a échoué, il peut s'agir d'un problème d'autorisation."; } </code>Cette étape aide à déterminer rapidement si vous avez la permission de saisir le répertoire.