事实:
- 有一个网站
- 可通过www.example.org访问该网站
- 有一个EC2实例很可能会保持网站
- 服务器是Apache
- 服务器操作系统是Ubuntu
- 我对服务器拥有完全访问权限(和sudo特权)
- 服务器是一团糟
问题是我不知道在哪里-简单地说-找到要加载的index.html / index.php。
我如何找出在哪里可以找到网站的PHP和HTML代码?有没有系统的方法来解决这个问题?
find / -name nameofsomefileonthewebsite.html
?
事实:
问题是我不知道在哪里-简单地说-找到要加载的index.html / index.php。
我如何找出在哪里可以找到网站的PHP和HTML代码?有没有系统的方法来解决这个问题?
find / -name nameofsomefileonthewebsite.html
?
Answers:
首先,您应该检查服务器上托管了哪些网站
# 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会看文件在/虚拟主机/缺省的/的public_html /,同时与http://example.net/api/some.file .html文件将位于/ vhosts / default / public_api /。
关于重写/重定向,特别是编程式的(当重定向由某些php代码触发时),我认为没有找到这种情况的简便方法。
尝试使用查找
find / -type f \( -iname "*index.html*" -o -iname "*index.php*" \) 2> /dev/null
否则,假设已从Ubuntu存储库安装了Apache,请查看/etc/apache2/sites-available
,即
grep -niR "thedomainname" /etc/apache2/sites-available
如果网站上定义了apache VHOST,则可能会找到配置文件,然后在该文件中查找,"documentroot"
这应该告诉您源代码的位置
我不知道在哪里...找到要加载的index.html / index.php。
一种方法是浏览站点以找到一个更独特的页面-可以说newcontactform.php-理想情况下,该页面不太可能出现在同一服务器托管的其他站点中。
然后可以尝试
locate newcontactform.php
如果失败,请遵循
find / -name newcontactform.php
这应该会产生很少的候选人名单。
然后,您可以检查文件,进行比较,并在必要时尝试进行一些小的更改(例如,插入HTML注释),以验证文件确实生成了页面。
有时,配置文件在ps
命令的输出中很明显。最坏的情况是,ps -ef | grep -e 'apache|httpd'
但更创造性地使用ps
选项可能值得探索。
您可以httpd.conf
在Ubuntu和Apache httpd项目(可能有所不同)的典型位置中查找,也可以仅使用locate
和find
。
有时,主配置文件引用虚拟主机的其他配置文件。您可以通过识别主配置文件来解决此问题。
有时,旧服务器运行各种Web服务器守护程序。在这种情况下,可能需要一段时间才能找到它们,然后计算出它们的配置文件在哪里。上述技术的组合最终应会成功。
您可以使用来找到正在80端口等上监听的程序
netstat -lntp
。通常,查找二进制文件是指向包含配置文件的目录树的有用指针。
您可以在Web服务器的(Apache)配置文件-httpd.conf(最有可能位于/ etc /中)中检查要查找的域的Vhost,只需打开该文件并滚动浏览,直到找到VirtulaHost指令即可。您的域,在那里您将看到DocumentRoot指令-这是您网站的文档根目录,您可以在其中找到应用程序的文件。
请到
cd / etc / apache2 / site-avaliable /
在这里您将找到您的配置文件(即:000-default.conf)
请使用以下方式打开此文件/打开您的配置文件
vi 000-default.conf
您将在此处找到DocumentRoot,这是您网站的代码
这也是Default conf文件,同样,您将获得一些conf详细信息,请同时检查这些内容。