如何使用Zend Guard加载程序识别PHP文件是否已编码

时间:2015-01-09 06:58:23

标签: php zend-framework encoding zend-guard

去年,我通过使用Zend Guard Loader PHP扩展编码所有文件在客户端服务器中部署了一个项目,在部署之后,我们根据客户端电子邮件进行了一些快速更改/修复,并在实时服务器上部署了文件而无需编码作为一个紧急事项,我们在部署之后已经做了很多次,所以现在我处于一个阶段,我没有在没有编码的情况下部署的文件列表。

现在,客户今年将通过进一步整合需要对当前解决方案产生重大影响的新模块来升级解决方案。因此,在继续推进新模块集成之前,我想生成一个报告,说明当前在没有编码的情况下部署在实时服务器上的文件是什么。

现在进行技术讨论,我在谷歌搜索了一个解决方案,我们可以使用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 个答案:

答案 0 :(得分:1)

您需要递归检查不以<?php @Zend;开头的php文件:

$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();
    }
  }
}