Вывод файлов PHP, к которым не подключен другой файл PHP
- Создается файл
test_include.phpв корневой директории сайта - Он подключается к
index.phpпри помощиinclude('test_include.php'); - В другие PHP-файлы вставляется
print_r(get_included_files()); - Затем, когда я обращаюсь к этим файлам через браузер, выводится список подключенных к ним файлов, в которых должен быть
test_include.php, вот так:Array ( [0] => /var/www/html/index.php [1] => /var/www/html/test_include.php)
Как получать имена файлов, к которым test_include.php не подключен? Нужно автоматизировать данный процесс.
Ответы (1 шт):
Автор решения: Вадим Александру
→ Ссылка
// получаем рекурсивно все файлы (тут желательно сделать проверку на расширение файл *.php)
function getFiles($dir, &$results = array()) {
$files = scandir($dir);
foreach ($files as $key => $value) {
$path = realpath($dir . DIRECTORY_SEPARATOR . $value);
if (!is_dir($path)) {
$results[] = $path;
} else if ($value != "." && $value != "..") {
getFiles($path, $results);
$results[] = $path;
}
}
return $results;
}
function isValid($text)
{
// тут можно еще что-нибуь придумать, чтобы исключить файлы в которые к примеру есть
// закоментированый инклуд, удалить все пробелы и добавить еще шаблоны для поиска типу require_once ...
$mask = "include('test_include.php');";
return false === strpos($text, $mask);
}
$response = [];
foreach (getFiles('php-files') as $path)
{
$text = file_get_contents($path);
if(isValid($text)) {
$response[] = $path;
}
}
print_r(
$response
);