J'ai récemment découvert une méthode astucieuse pour accéder au système de fichiers et récupérer des informations précieuses, comme l'existence de fichiers et de dossiers, ainsi que leur contenu. Cette méthode peut s'avérer très utile comme alternative à la fonction PHP ` file_exists` , car les informations relatives à l'existence des fichiers peuvent être utilisées dans la requête pour des fonctions de tri et d'agrégation ultérieures.
Si l'utilisateur de la base de données associée dispose des privilèges FILE , la commande peut être utilisée.
SELECT LOAD_FILE(*PFAD ZUR DATEI*)
Pendant la requête, non seulement vérifier si un fichier existe, mais également lire son contenu.
Sur les systèmes Windows, il convient de noter que les barres obliques inverses doivent être marquées en conséquence dans le chemin d'accès au fichier (exemple: C: \\ Windows \\ System32 \\ drivers \\ etc \\ hosts). L'aspect de sécurité ne doit pas non plus être complètement ignoré, car lorsque le privilège FILE est accordé, l'accès à la base de données signifie automatiquement l'accès au reste du système de fichiers.
Pour garantir que non seulement les valeurs NULL sont renvoyées, il faut s'assurer que l'utilisateur qui exécute MySQL dispose des droits de lecture.
Pour accéder aux fichiers volumineux, la propriété globale "max_allowed_packet", qui est définie sur 1 Mo, doit être augmentée.
mysql -u... -p... set global max_allowed_packet = 1024 * 1024 * 512; exit;
Vous pouvez désormais (après avoir redémarré le serveur) accéder à des fichiers d'une taille maximale de 512 Mo.