Я только что наткнулся на приятную возможность в MySQL подключиться к файловой системе и получить ценную информацию, например о существовании файлов и папок или их содержимом. Это может быть очень полезно в качестве альтернативы функции php file_exists , поскольку информация о существовании файла (ов) все еще может быть использована в запросе для дальнейшей сортировки и функций агрегирования.
Если связанный пользователь базы данных имеет привилегию FILE , вы можете использовать команду
SELECT LOAD_FILE(*PFAD ZUR DATEI*)
Во время запроса не только проверяют, существует ли файл, но и считывают его содержимое.
В системах Windows следует отметить, что обратная косая черта должна быть отмечена соответствующим образом в пути к файлу (пример: C: \ Windows \ System32 \ drivers \ etc \ hosts). Аспект безопасности также не следует полностью игнорировать, поскольку, когда предоставляется привилегия FILE, доступ к базе данных автоматически означает доступ к остальной части файловой системы.
Чтобы гарантировать, что возвращаются не только значения NULL, необходимо убедиться, что пользователь, использующий MySQL, имеет права чтения.
Чтобы также получить доступ к большим файлам, необходимо увеличить глобальное свойство max_allowed_packet, равное 1 МБ.
mysql -u... -p... set global max_allowed_packet = 1024 * 1024 * 512; exit;
Теперь вы можете (после перезапуска сервера) получить доступ к файлам размером до 512 МБ.