我 8 个月前删除了一个 php 文件。但仍然可以通过服务器 IP 地址访问(例如:123.45.67.89/path/deleted_file.php),但不能通过域地址访问(例如://www.mydomain.com/path/deleted_file.php)这是为什么?我该如何阻止这种情况?
这是 AWS EC2 Ubuntu Apache2 服务器。
答案1
尝试重新启动 Apache。如果成功,可能是因为 Apache/PHP 保持文件打开。这是文件系统工作的一种奇怪方式。文件名只是一个标识符,当您删除文件时,通常只会删除标识符。但是,如果另一个进程仍打开该文件(即指向该文件的打开文件描述符),它仍然能够访问所有内容。(这只是一个简短而不准确的解释,请谷歌一下以获取确切的细节。)
例如,此机制还允许您就地升级应用程序。这也是为什么某些应用程序(如 Firefox)会要求您重新启动它们的原因。
答案2
我发现了这个问题。
ip 请求登陆到 /var/www/ 并且有相同的文件路径。(在移动到新站点之前一直在使用)例如:/var/www/path/deleted_file.php
因此最好先尝试从根目录找到文件:〜找到deleted_file.php