Как определить, закодирован ли PHP-файл или нет с помощью загрузчика Zend Guard
В прошлом году я развернул проект на клиентском сервере, кодировав все файлы с использованием расширения Zend Guard Loader PHP, и после развертывания мы сделали несколько быстрых изменений / исправлений в соответствии с электронными письмами клиента и развернули файлы без шифрования на реальном сервере. срочности, что мы делали так много раз после развертывания, так что теперь я нахожусь на этапе, когда у меня нет списка файлов, которые были развернуты без кодирования на живом сервере.
Теперь в этом году Клиент собирается обновить решение за счет дальнейшей интеграции новых модулей, которые требуют значительного влияния на текущее решение. Поэтому, прежде чем продолжить интеграцию с новыми модулями, я хотел бы создать один отчет о том, какие файлы в настоящее время развернуты на живом сервере без кодирования.
Теперь, приступая к техническому обсуждению, я искал в Google и нашел одно решение, которое мы можем проверить, закодирован ли файл с помощью Zend Guard Loader - PHP API. ( http://files.zend.com/help/Zend-Server-5/zend_guard_loader_-_php_api.htm)
API предоставляет одну функцию boolean zend_loader_file_encoded (void), но на самом деле эта функция не принимает аргументов, поскольку она всегда проверяет текущий файл, зашифрован ли текущий файл или нет с использованием Zend Guard.
В основном я хотел бы просмотреть каждую папку и дополнительные файлы внутри нее на сервере, чтобы проверить, закодирована она или нет.
С нетерпением ждем вашего дальнейшего пути.
1 ответ
Вам нужно рекурсивно проверять php-файлы, которые не начинаются с <?php @Zend;
:
$directory = new \RecursiveDirectoryIterator($path);
$iterator = new \RecursiveIteratorIterator($directory);
$files = array();
foreach ($iterator as $info) {
if (substr($info->getPathname(), -4) === '.php') {
$f = fopen($info->getPathname(), 'r');
$bytes = fgets($f, 12);
fclose($f);
if($bytes !== '<?php @Zend;') {
$files[] = $info->getPathname();
}
}
}