以编程方式识别 PHP 和 ASP 包含依赖项 [关闭]
Posted
技术标签:
【中文标题】以编程方式识别 PHP 和 ASP 包含依赖项 [关闭]【英文标题】:Programmatically identify PHP and ASP include dependencies [closed] 【发布时间】:2017-01-05 10:50:51 【问题描述】:我正在尝试自动清理遗留/遗留代码,我可以从 IIS 日志中识别当前正在使用的资源,但是像 .ASP 和 .php 这样的服务器端页面包含我希望能够通过代码识别的链(C#)
为了缩小问题范围,因为它太宽泛了......
操作系统 - Windows 10 Web 服务器 - IIS 首选语言 - C# 示例 - 任何 IIS 服务的网站我有读取 IIS 日志文件的代码,我在其中识别了所有静态服务资源,包括初始 .ASP 或 .PHP 页面。
我还需要一些附带的 C# 代码来详细说明在服务器上处理的任何 .ASP 或 .PHP 包含的文件,因此不会出现在 IIS 日志中。
碰巧我找到了解决方案并在下面提供了答案。
我希望这是足够的细节来取消“等待”
【问题讨论】:
Php 允许用户通过 spl_autoload_register 以任何方式将类名映射到文件路径(自动加载)。否则我会说寻找 include/require(_once) 行。 题外话:***.com/help/on-topic 不会涵盖所有内容,但最近的最后访问文件时间? 为了让这个问题更符合主题,请举例说明您迄今为止尝试过的代码/流程、预期结果以及哪些对您有效,哪些对您无效。 【参考方案1】:非常感谢@Progrock 指点我检查目标文件夹中文件的上次访问时间。这是我必须做的。
确保捕获上次访问时间是由 Windows 设置的(请参阅Directory.GetFiles keeping the last access time)
Process.Start("fsutil", "behavior set disablelastaccess 0").WaitForExit();
还需要重新启动 IIS 以停止任何缓存在内存中的文件
Process.Start("IISRESET").WaitForExit();
需要刷新 FileInfo 以确保您获得正确的上次访问时间(请参阅How can System.IO.FileSystemInfo.Refresh be used)。
这导致了以下代码...
var start = DateTime.UtcNow;
Process.Start("fsutil", "behavior set disablelastaccess 0").WaitForExit();
Process.Start("IISRESET").WaitForExit();
//do work that will access folder. i.e. access IIS web pages
var files = Directory.GetFiles(iisPath, "*.*", SearchOption.AllDirectories).ToList();
files = files.Where(x =>
var fileInfo = new FileInfo(x);
fileInfo.Refresh();
return fileInfo.LastAccessTimeUtc >= start;
).ToList();
我可以使用此文件列表来识别所有 .ASP 和 .PHP 以及通过 IIS 服务器在页面请求中访问的任何其他文件。
【讨论】:
以上是关于以编程方式识别 PHP 和 ASP 包含依赖项 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式列出 C++ 或 Python 中的 DLL 依赖项?