Position actuelle: Accueil> Derniers articles> Dans PHP, comment vérifier l'exécutabilité d'un fichier de lien symbolique via IS_EXECUTABLE?

Dans PHP, comment vérifier l'exécutabilité d'un fichier de lien symbolique via IS_EXECUTABLE?

gitbox 2025-09-16

Ok, je comprends. Ce qui suit est le contenu de l'article, qui comprend les lignes de séparation entre le contenu non pertinent et le texte principal en fonction de vos exigences.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Ceci est une condition préalable qui n&#39;a rien à voir avec le contenu de l&#39;article PHP Exemple de code</span></span><span>
</span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">time</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Horodatage actuel: <span class="hljs-subst">$timestamp</span></span></span><span>\n";
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-comment"># exister PHP milieu,Comment passer `is_executable` Pour vérifier l&#39;exécutabilité des fichiers de liens symboliques?</span></span><span>

exister PHP milieu,`</span><span><span class="hljs-title function_ invoke__">is_executable</span></span><span>()` Les fonctions sont utilisées pour vérifier si le fichier spécifié a des autorisations exécutables。en général,Il peut être utilisé directement dans des fichiers réguliers,Mais lorsqu&#39;il rencontre un lien symbolique(symlink)heure,La situation est légèrement différente。Cet article présentera comment l&#39;utiliser en détail `is_executable` Pour vérifier l&#39;exécutabilité des fichiers de liens symboliques。

</span><span><span class="hljs-comment">## 1. `is_executable()` Utilisation de base</span></span><span>

`is_executable` L&#39;utilisation de base est la suivante:

```php
</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-string">'/path/to/your/file'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_executable</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$file</span></span></span><span> C&#39;est un fichier exécutable";
} </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">"<span class="hljs-subst">$file</span></span></span><span> 不C&#39;est un fichier exécutable";
}
</span></span>

Cette fonction renvoie True ou False , selon que l'utilisateur actuel a des autorisations d'exécution sur le fichier.

2. Liens de symbole et vérifications d'exécutabilité

Lorsque vous vérifiez le lien symbolique, Is_Execuable () ne vérifie pas les autorisations du lien symbolique lui-même, mais vérifie l'exécutabilité du fichier cible auquel il pointe. Par exemple:

 <span><span><span class="hljs-variable">$symlink</span></span><span> = </span><span><span class="hljs-string">'/path/to/symlink'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_executable</span></span><span>(</span><span><span class="hljs-variable">$symlink</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Liens de symbole <span class="hljs-subst">$symlink</span></span></span><span> Le fichier pointé est exécutable";
} </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">"Liens de symbole <span class="hljs-subst">$symlink</span></span></span><span> Le fichier pointé n&#39;est pas exécutable";
}
</span></span>

Remarque ici:

  • Renvoie True si le fichier cible pointé par le lien symbolique existe et est exécutable.

  • Si le fichier cible n'existe pas, renvoyez false .

  • Si le lien symbolique lui-même ne pointe pas vers aucun fichier valide, renvoyez false .

3. Combiner readLink () pour obtenir la cible de lien symbolique

Parfois, vous voudrez peut-être connaître explicitement le chemin vers lequel le lien symbolique pointe, vous pouvez utiliser readLink () :

 <span><span><span class="hljs-variable">$symlink</span></span><span> = </span><span><span class="hljs-string">'/path/to/symlink'</span></span><span>;
</span><span><span class="hljs-variable">$target</span></span><span> = </span><span><span class="hljs-title function_ invoke__">readlink</span></span><span>(</span><span><span class="hljs-variable">$symlink</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$target</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Liens de symbole指向: <span class="hljs-subst">$target</span></span></span><span>\n";
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_executable</span></span><span>(</span><span><span class="hljs-variable">$target</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le fichier d&#39;objet peut être exécutable"</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">"Le fichier d&#39;objet n&#39;est pas exécutable"</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">"这不是有效的Liens de symbole"</span></span><span>;
}
</span></span>

Cela rend plus clair que l'exécutabilité concerne le fichier cible plutôt que le lien symbolique lui-même.

4. Choses à noter

  1. Différence multiplateforme : les liens de symbole sont pris en charge dans les systèmes Windows, et IS_EXECUTable peut se comporter différemment de Linux ou MacOS.

  2. Problème des autorisations : Même si le fichier a des autorisations exécutables, FALSE sera renvoyé si l'utilisateur exécutant le script PHP n'a pas l'autorisation d'y accéder.

  3. Sécurité : Méfiez-vous des attaques SymLink lors de la gestion des liens symboliques téléchargés ou générés dynamiquement par les utilisateurs.

Résumer

  • is_execuable () peut vérifier si le fichier est exécutable, y compris la cible indiquée par le lien symbolique.

  • Pour les liens symboliques, la fonction vérifie les autorisations du fichier cible, pas le lien lui-même.

  • Vous pouvez combiner readLink () pour clarifier le chemin cible pour améliorer la lisibilité et la sécurité de la logique du programme.

Grâce aux méthodes ci-dessus, vous pouvez juger de manière fiable l'exécutabilité des fichiers de liens symboliques dans PHP, gérant ainsi en toute sécurité et efficacement les autorisations de fichiers.

<hr> <? PHP // Il s'agit d'un exemple de code PHP de queue qui n'est pas lié au contenu de l'article. Echo "La vérification de l'article est terminée \ n"; ?>
 <span></span>