12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <?php
- // +----------------------------------------------------------------------
- // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
- // +----------------------------------------------------------------------
- // | Author: CRMEB Team <admin@crmeb.com>
- // +----------------------------------------------------------------------
- namespace crmeb\utils;
- use Exception;
- /**
- * 签名计算
- * Class fileVerification
- * @package crmeb\utils
- */
- class fileVerification
- {
- public $path = "";
- public $fileValue = "";
- /**
- * 项目路径
- * @param string $path
- * @return string
- * @throws Exception
- */
- public function getSignature(string $path): string
- {
- if (!is_dir($path) && !is_file($path)) {
- throw new Exception($path . " 不是有效的文件或目录!");
- }
- $appPath = $path . DS . 'app';
- if (!is_dir($appPath)) {
- throw new Exception($appPath . " 不是有效的目录!");
- }
- $crmebPath = $path . DS . 'crmeb';
- if (!is_dir($crmebPath)) {
- throw new Exception($crmebPath . " 不是有效的目录!");
- }
- $this->path = $appPath;
- $this->getFileSignature($appPath);
- $this->path = $crmebPath;
- $this->getFileSignature($crmebPath);
- return md5($this->fileValue);
- }
- /**
- * 计算签名
- * @param string $path
- * @return void
- * @throws Exception
- */
- public function getFileSignature(string $path)
- {
- if (!is_dir($path)) {
- $this->fileValue .= @md5_file($path);
- } else {
- if (!$dh = opendir($path)) throw new Exception($path . " File open failed!");
- while (($file = readdir($dh)) != false) {
- if ($file == "." || $file == "..") {
- continue;
- } else {
- $this->getFileSignature($path . DS . $file);
- }
- }
- closedir($dh);
- }
- }
- }
|