Position actuelle: Accueil> Derniers articles> Comment utiliser FTP_SITE et FTP_CHDIR en combinaison, comment obtenir un contrôle fin des autorisations de répertoire?

Comment utiliser FTP_SITE et FTP_CHDIR en combinaison, comment obtenir un contrôle fin des autorisations de répertoire?

gitbox 2025-06-16

Dans PHP, nous utilisons généralement des fonctions FTP pour interagir avec un serveur FTP. Grâce à la combinaison des deux fonctions FTP_SITE et FTP_CHDIR , nous pouvons contrôler efficacement les autorisations de fichiers ou de répertoires sur le serveur FTP. Grâce à ces fonctions, les développeurs peuvent réaliser la gestion raffinée des autorisations de contrôle d'accès et d'opération pour des répertoires spécifiques.

Cet article présentera comment utiliser les fonctions FTP_SITE et FTP_CHDIR pour implémenter un contrôle fin des autorisations de répertoire.

1. Comprendre FTP_SITE et FTP_CHDIR

  1. ftp_site ()
    Cette fonction est utilisée pour envoyer des commandes FTP spécifiques au serveur FTP, nous permettant d'effectuer des opérations avancées, telles que la définition des autorisations, la modification des répertoires, etc. Cette fonction est souvent utilisée pour contrôler les opérations spécifiques au serveur qui ne font pas partie du protocole FTP standard, mais de nombreux serveurs FTP prennent en charge ces commandes personnalisées.

    grammaire:

     <span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">ftp_site</span></span><span> ( resource </span><span><span class="hljs-variable">$ftp_stream</span></span><span> , </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$command</span></span><span> )
    </span></span>
    • $ ftp_stream : une ressource qui se connecte à un serveur FTP via ftp_connect () ou ftp_ssl_connect () .

    • $ Commande : La chaîne de commande envoyée au serveur FTP.

  2. ftp_chdir ()
    Cette fonction est utilisée pour modifier le répertoire de travail actuel sur la connexion FTP. Il nous permet d'aller dans un répertoire spécifique, où nous pouvons effectuer des opérations ultérieures.

    grammaire:

     <span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">ftp_chdir</span></span><span> ( resource </span><span><span class="hljs-variable">$ftp_stream</span></span><span> , </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$directory</span></span><span> )
    </span></span>
    • $ ftp_stream : la ressource de connexion au serveur FTP.

    • $ répertoire : le répertoire cible vers lequel basculer.

2. Utilisez FTP_SITE et FTP_CHDIR pour obtenir un contrôle fin

Dans certains scénarios, les développeurs peuvent vouloir contrôler les droits d'accès à un certain répertoire, tels que l'empêcher les utilisateurs d'accéder à des répertoires spécifiques ou d'accorder différentes autorisations en fonction des rôles utilisateur. Dans ce cas, les fonctions FTP_SITE et FTP_CHDIR peuvent être efficacement combinées pour effectuer des tâches de gestion des répertoires complexes.

Supposons que nous devons définir différentes autorisations d'accès des répertoires pour différents utilisateurs sur un serveur FTP, les étapes sont les suivantes:

1. Utilisez FTP_CHDIR pour entrer le répertoire cible

Tout d'abord, utilisez FTP_CHDIR pour saisir le répertoire cible où nous voulons définir les autorisations. Supposons que nous soyons déjà connectés au serveur FTP et que l'utilisateur souhaite accéder à un répertoire nommé user_data .

 <span><span><span class="hljs-variable">$ftp_server</span></span><span> = </span><span><span class="hljs-string">'ftp.example.com'</span></span><span>;
</span><span><span class="hljs-variable">$ftp_user</span></span><span> = </span><span><span class="hljs-string">'username'</span></span><span>;
</span><span><span class="hljs-variable">$ftp_pass</span></span><span> = </span><span><span class="hljs-string">'password'</span></span><span>;

</span><span><span class="hljs-comment">// Établir une connexion</span></span><span>
</span><span><span class="hljs-variable">$ftp_conn</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-variable">$ftp_server</span></span><span>);
</span><span><span class="hljs-variable">$login_result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_login</span></span><span>(</span><span><span class="hljs-variable">$ftp_conn</span></span><span>, </span><span><span class="hljs-variable">$ftp_user</span></span><span>, </span><span><span class="hljs-variable">$ftp_pass</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$ftp_conn</span></span><span> || !</span><span><span class="hljs-variable">$login_result</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'FTP connection has failed!'</span></span><span>);
}

</span><span><span class="hljs-comment">// Entrez le répertoire cible</span></span><span>
</span><span><span class="hljs-variable">$target_dir</span></span><span> = </span><span><span class="hljs-string">'/user_data/'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ftp_chdir</span></span><span>(</span><span><span class="hljs-variable">$ftp_conn</span></span><span>, </span><span><span class="hljs-variable">$target_dir</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Successfully changed to <span class="hljs-subst">$target_dir</span></span></span><span>\n";
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Failed to change directory to <span class="hljs-subst">$target_dir</span></span></span><span>\n";
}
</span></span>
2. Définir les autorisations du répertoire à l'aide de ftp_site

Après avoir basculé au répertoire cible, nous pouvons envoyer des commandes au serveur via FTP_SITE pour contrôler les autorisations du répertoire. Par exemple, si nous souhaitons définir le répertoire pour être en lecture seule ou permettre à un utilisateur d'effectuer des opérations d'écriture, etc., nous pouvons envoyer la commande correspondante.

Différents serveurs FTP prennent en charge différentes commandes. Par exemple, sur certains serveurs, vous pouvez définir des autorisations de répertoire avec des commandes comme ce qui suit:

 <span><span><span class="hljs-comment">// Défini en lecture seule</span></span><span>
</span><span><span class="hljs-variable">$command</span></span><span> = </span><span><span class="hljs-string">'CHMOD 444 '</span></span><span> . </span><span><span class="hljs-variable">$target_dir</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ftp_site</span></span><span>(</span><span><span class="hljs-variable">$ftp_conn</span></span><span>, </span><span><span class="hljs-variable">$command</span></span><span>);

</span><span><span class="hljs-comment">// Réglé sur Writable</span></span><span>
</span><span><span class="hljs-variable">$command</span></span><span> = </span><span><span class="hljs-string">'CHMOD 755 '</span></span><span> . </span><span><span class="hljs-variable">$target_dir</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ftp_site</span></span><span>(</span><span><span class="hljs-variable">$ftp_conn</span></span><span>, </span><span><span class="hljs-variable">$command</span></span><span>);
</span></span>

Remarque: FTP_SITE n'est pas une commande standard prise en charge par tous les serveurs FTP, vous devez donc d'abord comprendre l'ensemble de commandes pris en charge par le serveur FTP lorsque vous l'utilisez. Si le serveur ne prend pas en charge ces commandes, la gestion de l'autorisation peut être requise d'une autre manière (comme l'utilisation du panneau de configuration ou de l'API fournie par le serveur FTP).

3. Définissez différentes autorisations d'accès pour différents utilisateurs

Grâce à la combinaison de FTP_CHDIR et FTP_SITE , nous pouvons définir différentes autorisations pour différents utilisateurs ou groupes. Par exemple, les administrateurs peuvent accéder à tous les répertoires, tandis que les utilisateurs ordinaires ne peuvent accéder qu'aux répertoires spécifiques. Voici un exemple de mise en œuvre simple:

 <span><span><span class="hljs-comment">// Supposons que le rôle d&#39;utilisateur passe $user_role Portons un jugement</span></span><span>
</span><span><span class="hljs-variable">$user_role</span></span><span> = </span><span><span class="hljs-string">'admin'</span></span><span>; </span><span><span class="hljs-comment">// ou 'user'</span></span><span>

</span><span><span class="hljs-comment">// L&#39;administrateur a des autorisations complètes</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$user_role</span></span><span> == </span><span><span class="hljs-string">'admin'</span></span><span>) {
    </span><span><span class="hljs-title function_ invoke__">ftp_chdir</span></span><span>(</span><span><span class="hljs-variable">$ftp_conn</span></span><span>, </span><span><span class="hljs-string">'/admin_data/'</span></span><span>);
    </span><span><span class="hljs-title function_ invoke__">ftp_site</span></span><span>(</span><span><span class="hljs-variable">$ftp_conn</span></span><span>, </span><span><span class="hljs-string">'CHMOD 777 /admin_data'</span></span><span>);
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Admin access granted to /admin_data\n"</span></span><span>;
} </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-variable">$user_role</span></span><span> == </span><span><span class="hljs-string">'user'</span></span><span>) {
    </span><span><span class="hljs-title function_ invoke__">ftp_chdir</span></span><span>(</span><span><span class="hljs-variable">$ftp_conn</span></span><span>, </span><span><span class="hljs-string">'/user_data/'</span></span><span>);
    </span><span><span class="hljs-title function_ invoke__">ftp_site</span></span><span>(</span><span><span class="hljs-variable">$ftp_conn</span></span><span>, </span><span><span class="hljs-string">'CHMOD 444 /user_data'</span></span><span>);
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"User access granted to /user_data\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Invalid role\n"</span></span><span>;
}
</span></span>

De cette façon, nous pouvons définir dynamiquement les autorisations d'accès au répertoire en fonction du rôle de l'utilisateur.

3. Résumé

En combinant FTP_SITE et FTP_CHDIR , les développeurs peuvent gérer de manière flexible les autorisations de fichiers et de répertoires sur les serveurs FTP. La fonction FTP_CHDIR nous aide à changer de répertoires, tandis que le FTP_SITE nous permet d'effectuer des opérations avancées, telles que la définition des autorisations de fichiers, la création de répertoires, etc.

Bien que ces fonctions fournissent des capacités de contrôle solides, lorsqu'elles sont utilisées, il est important d'assurer une compréhension claire de la gestion de l'autorisation du serveur et d'ajuster les commandes en fonction des exigences spécifiques du serveur.

Avec un contrôle d'autorisation approprié, la sécurité du serveur FTP peut être assurée tout en évitant les fuites ou les abus d'autorisation inutiles.