我如何找出网站代码所在的位置?

我如何找出网站代码所在的位置?

事实:

  • 有一个网站
  • 该网站可通过 www.example.org 访问
  • 有一个 EC2 实例很可能保持网站
  • 服务器是 Apache
  • 服务器操作系统是 Ubuntu
  • 我对服务器有完全访问权限(以及 sudo 权限)
  • 服务器非常混乱

问题是我不知道在哪里 - 简单地说 - 找到已加载的index.html / index.php。

我如何知道网站的 PHP 和 HTML 代码在哪里?有没有系统的方法可以解决这个问题?

答案1

首先你应该检查服务器上托管了哪些网站

# apachectl -t -D DUMP_VHOSTS

然后,当您找到一个站点时,请检查选项 DocumentRoot 的相应配置文件。例如

# apachectl -t -D DUMP_VHOSTS
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server 192.168.88.87 (/etc/httpd/conf.d/192.168.88.87.conf:1)
         port 80 namevhost 192.168.88.87 (/etc/httpd/conf.d/192.168.88.87.conf:1)
         port 80 namevhost gl-hooks.example.net (/etc/httpd/conf.d/hooks.conf:1)
                 alias example.net
                 alias www.example.net

你想知道 example.net 网站位于哪里

# grep DocumentRoot /etc/httpd/conf.d/hooks.conf
    DocumentRoot /vhosts/gl-hooks.example.net/

# cd /vhosts/gl-hooks.example.net/
# ls -la
total 4484
drwxr-xr-x  6 apache apache    4096 Feb 10 11:59 .
drwxr-xr-x 14 root   root      4096 Feb 23 08:54 ..
-rw-r--r--  1 root   root      1078 Dec 19 09:31 favicon.ico
-rw-r--r--  1 apache apache     195 Dec 25 14:51 .htaccess
-rw-r--r--  1 apache apache      98 Dec  7 10:52 index.html

还应留意别名和重定向/重写

您还应该注意任何别名指令。例如,使用以下设置

<VirtualHost *:80>
   ServerName example.net
   ServerAlias www.example.net
   ...
   DocumentRoot /vhosts/default/public_html/
   Alias /api/ /vhosts/default/public_api/
   ...
</VirtualHost>

当您访问http://example.net/some.file.html- apache 将会查看 /vhosts/default/public_html/ 中的文件,同时http://example.net/api/some.file.html该文件将被查看/vhosts/default/public_api/。

那么重写/重定向呢,特别是编程性的(当重定向由某些 php 代码触发时),我认为没有简单的方法来找到这种情况。

答案2

尝试使用查找

find / -type f \( -iname "*index.html*" -o -iname "*index.php*" \) 2> /dev/null

否则,假设 Apache 已从 Ubuntu 存储库安装,请查看/etc/apache2/sites-available,即

grep -niR "thedomainname" /etc/apache2/sites-available

如果网站定义了 apache VHOST,则可能会找到配置文件,然后在该文件中查找,"documentroot"它会告诉你源代码的位置

答案3

另一种方法,可用于调试网站(或任何进程),即使用lsof(可能不在路径上,通常在 中找到/sbin/lsof

lsof -s [PID]将列出给定进程所处理的所有文件,并有助于准确了解正在使用的内容(这包括您的 html/php 文件,以及网站所需的日志文件和库)

答案4

您可以在 Web 服务器(apache)的配置文件中检查要查找的域的 Vhost -httpd配置文件(最有可能位于 /etc/)只需打开文件并滚动浏览,直到找到虚拟主机您的域名的指令,您将在那里看到文档根目录指令 - 这是您的网站的文档根目录,您可以在其中找到应用程序的文件。

相关内容